如何让照片大小变小QListWidget的大小随Item的数目多少而变化

您所在的位置: &
QListWidget(2)
QListWidget(2)
电子工业出版社
《Qt中的C++技术》第13章 Model/View框架,本章详细阐述Qt如何实现这个框架。该框架涉及Qt库的36个类,结构复杂、设计精良。这一章的篇幅最长,读者将从本章体会到一个复杂面向对象系统背后的设计理念。 本节为大家介绍QListWidget。
13.7.1& QListWidget(2)
设置对应的编码方案,然后在行②~③的几行中调用QObject::tr()函数,将本例中的字符串转换为Unicode编码的字符串。在这几行中,角色DisplayRole对应着数据项的文字,DecorationRole对应着数据项的图标,TextAlignmentRole对应着数据项文字的对齐方式,ToolTipRole对应着鼠标停留在数据项区域中时所要显示的文字信息。而角色UserRole对应的数据子项却是由应用程序自行决定的,本例利用这个数据子项来存放英文版的新闻文字。
代码段13 31,设置QListWidgetItem所表示数据项中的数据子项,取自z:\examples\mvc\item_roles\NewsDialog.cppNewsDialog::NewsDialog() &{ &&&&&listWidget&=&new&QListWidget(this);&&&&&&&&&&&&&① &&&&&listWidget-setViewMode(QListView::IconMode); &&&&&listWidget-setIconSize(QSize(120,&80)); &&&&&listWidget-setMovement(QListView::Static); &&&&&listWidget-setFixedWidth(340); &&&&&listWidget-setSpacing(12); &&&&&&for&(&int&i=0;&i;&i++)&{ &&&&&&&&&News_Info&news&=&news_2011&[i];&&&&& &&&&&&&&&QListWidgetItem&*&item&=&new&QListWidgetItem(listWidget);&② &&&&&&&&&item-setData(Qt::DisplayRole,&&&&&&QObject::tr(news.news_title)&); &&&&&&&&&item-setData(Qt::DecorationRole,&QIcon(news.image_filename)&); &&&&&&&&&item-setData(Qt::TextAlignmentRole,Qt::AlignHCenter&);&&&&& &&&&&&&&&item-setData(Qt::ToolTipRole,&QString(&QObject::tr(news.&&&&&&&&&&&news_in_Chinese))&); &&&&&&&&&item-setData(Qt::UserRole,&QString(&news.news_in_English)&);③ &&&&&} &&&&&connect(listWidget,&&&&&&&&&④ &&&&&&&&&&&&&SIGNAL(currentItemChanged(QListWidgetItem&*,&QListWidgetItem&*)), &&&&&&&&&&&&&this,&SLOT(changeNews(QListWidgetItem&*,&QListWidgetItem*))); &&&&&image&=&new&QLabel(this); &&&&&newnews&&=&new&QLabel(this); &&&&&…… &} &void&NewsDialog::changeNews(QListWidgetItem&*current,&QListWidgetItem&&&*previous)&&&&&&⑤ &{ &&&&&int&row&=&listWidget-row(&current&); &&&&&image-setPixmap(&QPixmap(&news_2011[row].image_filename&)&); &&&&&news-setText(&current-data(Qt::UserRole).toString()&);&&&&&&&&⑥ &} &
行④将使得用户单击列表中某个数据项时,调用类NewsDialog的槽函数changeNews(行⑤),该函数的参数current表示用户单击的数据项,而previous表示单击之前的当前数据项。行⑥读取数据项中角色UserRole对应的数据子项,也就是此前写入的英文版新闻文字,显示在界面右下角的QLabel对象中。
类QTableWidget在其内部定义了一个具有表格结构的模型,并能够以表格的样子显示这个模型。表格中的每个数据项被表示为类QTableWidgetItem的对象。在表格视图中所要显示的数据被存放在每个数据项的角色DisplayRole对应的数据子项中。这个数据子项的类型为QVariant,其中可以存放类型为QString的字符串,也可以存放类型为int或者double的数值。我们可以调用该类的成员函数setData(),将所要显示的数据写入角色DisplayRole对应的数据子项中。类QTableWidget的成员函数setItem()可以将一个数据项设定到指定的行、列。
为了更加方便地控制数据项的外观,QTableWidgetItem提供了一组函数,用于设置数据项的背景、字体、文字对齐方式等与外观相关的属性。这些函数实际上调用了该类的成员函数setData(),通过修改数据项中各个数据子项的值,来影响数据项的外观。
我们举一个例子来演示QTableWidget的功能。这个例子的输出如图13 25所示,表格中的每一行显示一个国家的名称、这个国家2010年GDP总量值(单位为万亿美元),这个国家2010年的总人口(单位为亿),这个国家2010年人均GDP(单位为万美元/每人)。
图13 25& 使用QTableWidget显示一个表格
【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
本书全面讲解WPF的实际工作原理,是一本WPF权威著作。在紧贴实用
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
享誉全球的未来学家理查德.沃森,用科学和多元的视角
本书是图文并茂的Python学习参考书,书中并不包含深奥
对于任何一门编程语言来说,算法都是程序的"灵魂"。正
本书是为那些对Web开发感兴趣的读者而编写的。ASP(Active Server Pages)是微软公司在Web领域的又一次突破,它打破了以往只能由
51CTO旗下网站虽然特别简单,但是对于小白来说,还是有必要过一下脑子和眼睛,当然还得过手(江湖传言:眼过千变,不如手过一遍),所以记录在此:
#include "tablewidgetxxx.h"
#include &QtGui/QApplication&
#include &QtGui/QListWidget&
#include &QtGui/QSplitter&
int main(int argc, char *argv[])
QApplication app(argc, argv);
// 方法一,使用QStringList做内部模型,一下子添加所有内容
QListWidget * left = new QListWidget();
list && "98" && "99" && "100" && "101" && "102";
left-&addItems( list );
left-&sortItems();
// 方法二,使用QListWidgetItem做内部模型,一项一项添加
QListWidget * right = new QListWidget();
for ( int i=98; i&103; i++) {
QListWidgetItem * item = new QListWidgetI
item-&setData(Qt::DisplayRole, i);
right-&addItem(item);
right-&sortItems();
splitter.addWidget(left);
splitter.addWidget(right);
splitter.show();
return app.exec();
/art/902.htm
------------------------------------------------------------------------
QListWidget 去掉选中项
1、先去掉选中项的虚线框:
设置为无焦点:把FocusPolicy设置成:NoFocus
2、设置QListWidgetItem标志
调用setFlags函数,去掉Qt::ItemIsSelectable属性,setFlags(pListItem-&flags() & ~Qt::ItemIsSelectable)
参考: http://blog.csdn.net/itjobtxq/article/details/9198561
Views(...) Comments()QListWidget用法
setSelectionMode()设置list一次最多可以选择多少item
有两种方法来listwidget中添加Item,一种是在item构造时候,指定父widget,
如果item构造时候QListWidget已经存在,可以用下面的方法
new QListWidgetItem(tr("Oak"), listWidget);
第二种方法是构造完item,在使用QListWidget::addItem()来添加item
向QListWidget中指定的位置插入item,使用QListWidget::insertItem(int ,
QListWidgetItem*)
使用QListWidget::count()来统计widget中总共的item数目
使用QListWidget::takeItem(int index)来删除表中的某一项
打开和关闭item是否可以编辑使用QListWidget::openPersistentEditor(QListWidgetItem*)和
QListWidget::closePersistentEditor(QListWidgetItem*)
设置当前的item是第几行,QListWidget::setCurrentRow ( int row
设置list是否可以自动排序QListWidget::setSortingEnabled(bool),默认是FALSE
从list中查找是否含有某一项,
QList QListWidget::findItems ( const QString & text,
Qt::MatchFlags flags ) const
void&currentItemChanged ( QListWidgetItem *
current, QListWidgetItem * previous )
void&currentRowChanged ( int currentRow )
void&currentTextChanged ( const QString &
currentText )
void&itemActivated ( QListWidgetItem * item
void&itemChanged ( QListWidgetItem * item )
void&itemClicked ( QListWidgetItem * item )
void&itemDoubleClicked ( QListWidgetItem * item
void&itemEntered ( QListWidgetItem * item )
void&itemPressed ( QListWidgetItem * item )
void&itemSelectionChanged ()
当item改变时候,会发射信号currentItemChanged
、currentRowChanged、currentTextChanged 、itemSelectionChanged
、itemChanged ,感觉这些信号其实效果都是一样的,只不过用在不同的时候
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Error 404 (Not Found)!!1
404. That’s an error.
The requested URL /460583/ was not found on this server.
That’s all we know.

我要回帖

更多关于 如何让图片大小变小 的文章

 

随机推荐