如何在qlist 排序WidgetItem中添加按钮

我怎样才能设置一个QListWidgetitem的最小高度? QListWidget :: setItemWidget()使用一个自定义的控件,虽然我明确宣布我的自定义窗口小部件的最小高度,那些QListWidgetItems仍然有一个相当低的高度属性。
本文地址 :CodeGo.net/460583/
-------------------------------------------------------------------------------------------------------------------------
1. 使用setSizeHint上的项目。
void QListWidgetItem::setSizeHint ( const QSize & size )
这是为告诉委托多大的屏幕,必须保留该项目。
要设置每个人的最低高度QListWidgetItem您sizeHint()函数。例如,下面的代码将设置所有的最小高度QListWidgetItem为30PX ..
int count = ui-&listWidget-&count();
for(int i = 0; i & i++)
QListWidgetItem *item = ui-&listWidget-&item(i);
item-&setSizeHint(QSize(item-&sizeHint().width(), 30));
希望这会有所帮助..
本文标题 :如何设置QListWidgetItem的最小高度?
本文地址 :CodeGo.net/460583/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联&系& c&o&d&e&g&o &@&1&2&6&.&c&o&m当前访客身份:游客 [
当前位置:
QListWidget中默认是没有分割线的,怎么添加像这样的分隔线呢,
共有2个答案
<span class="a_vote_num" id="a_vote_num_
自己用程序画
<span class="a_vote_num" id="a_vote_num_
更多开发者职位上
有什么技术问题吗?
开源中国...的其他问题
类似的话题当前访客身份:游客 [
当前位置:
QListWidget可以显示一个清单,清单中的每个项目是QListWidgetItem的一个实例,每个项目可以通过QListWidgetItem来操作。可以通过QListWidgetItem来设置每个项目的图像与文字。下面说明3个例子,一个例子只显示文字,一个例子显示文字和图标,最后一个例子增加每个项的选择的信号。
#include &QApplication&
#include &QWidget&
#include &QVBoxLayout&
#include &QListWidget&
#include &QListWidgetItem&
int main(int argc, char** argv)
QApplication app(argc, argv);
QWidget* widget = new QW
QListWidget* listWidget = new QListW
QVBoxLayout* layout = new QVBoxL
QListWidgetItem* lst1 = new QListWidgetItem(&data&, listWidget);
QListWidgetItem* lst2 = new QListWidgetItem(&decision&, listWidget);
QListWidgetItem* lst3 = new QListWidgetItem(&document&, listWidget);
QListWidgetItem* lst4 = new QListWidgetItem(&process&, listWidget);
QListWidgetItem* lst5 = new QListWidgetItem(&printer&, listWidget);
listWidget-&insertItem(1, lst1);
listWidget-&insertItem(2, lst2);
listWidget-&insertItem(3, lst3);
listWidget-&insertItem(4, lst4);
listWidget-&insertItem(5, lst5);
listWidget-&show();
layout-&addWidget(listWidget);
widget-&setLayout(layout);
widget-&show();
app.exec();
运行如下图:
第2个例子:
#include &QApplication&
#include &QWidget&
#include &QVBoxLayout&
#include &QListWidget&
#include &QListWidgetItem&
int main(int argc, char** argv)
QApplication app(argc, argv);
QWidget* widget = new QW
QListWidget* listWidget = new QListW
QVBoxLayout* layout = new QVBoxL
QListWidgetItem* lst1 = new QListWidgetItem(QIcon(&images/data.png&), &data&, listWidget);
QListWidgetItem* lst2 = new QListWidgetItem(QIcon(&images/decision.png&), &decision&, listWidget);
QListWidgetItem* lst3 = new QListWidgetItem(QIcon(&images/document.png&), &document&, listWidget);
QListWidgetItem* lst4 = new QListWidgetItem(QIcon(&images/process.png&), &process&, listWidget);
QListWidgetItem* lst5 = new QListWidgetItem(QIcon(&images/printer.png&), &printer&, listWidget);
listWidget-&insertItem(1, lst1);
listWidget-&insertItem(2, lst2);
listWidget-&insertItem(3, lst3);
listWidget-&insertItem(4, lst4);
listWidget-&insertItem(5, lst5);
listWidget-&show();
layout-&addWidget(listWidget);
widget-&setLayout(layout);
widget-&show();
app.exec();
运行如下图:
第3个例子:
#include &QApplication&
#include &QWidget&
#include &QHBoxLayout&
#include &QListWidget&
#include &QListWidgetItem&
#include &QLabel&
int main(int argc, char** argv)
QApplication app(argc, argv);
QWidget* widget = new QW
QListWidget* listWidget = new QListW
QHBoxLayout* layout = new QHBoxL
QLabel* label = new QL
label-&setFixedWidth(100);
QListWidgetItem* lst1 = new QListWidgetItem(QIcon(&images/data.png&), &data&, listWidget);
QListWidgetItem* lst2 = new QListWidgetItem(QIcon(&images/decision.png&), &decision&, listWidget);
QListWidgetItem* lst3 = new QListWidgetItem(QIcon(&images/document.png&), &document&, listWidget);
QListWidgetItem* lst4 = new QListWidgetItem(QIcon(&images/process.png&), &process&, listWidget);
QListWidgetItem* lst5 = new QListWidgetItem(QIcon(&images/printer.png&), &printer&, listWidget);
listWidget-&insertItem(1, lst1);
listWidget-&insertItem(2, lst2);
listWidget-&insertItem(3, lst3);
listWidget-&insertItem(4, lst4);
listWidget-&insertItem(5, lst5);
QObject::connect(listWidget, SIGNAL(currentTextChanged(const QString &)), label, SLOT(setText(const QString &)));
listWidget-&show();
layout-&addWidget(listWidget);
layout-&addWidget(label);
widget-&setLayout(layout);
widget-&show();
app.exec();
运行如下图:
原文链接:
共有0个评论
更多开发者职位上
有什么技术问题吗?
长平狐的其他问题怎么在QListWidgetItem中添加按钮_百度知道
怎么在QListWidgetItem中添加按钮
我有更好的答案
就是一个listwidget中的各个item都添加几个按钮。应该怎么去做?先创建一个QWidget,然后对这个QWidget设置布局,然后往布局里添加你的
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Qt學習:項視圖類之QListWidget
&&&&&&&&類QListWidget在其內部定義了一個具有列表結構的模型,並以列表形式顯示其中的數據項。列表中的每個
&&&&&&&&類QListWidget在其內部定義了一個具有列表結構的模型,並以列表形式顯示其中的數據項。列表中的每個數據項被表示为類QListWidgetItem的一個對象。在列表視圖中所要顯示的數據被存放在每個數據項的角色DisplayRole對應的數據子項中。這個數據子項的類型为QVariant,其中可以存放類型为QString的字符串,也可以存放類型为int或者double的數&#20540;。我們可以調用QListWidget的成員函數addItem()
向列表添加一個數據項.
&&&&&&&&在ListWidget控件的properties選項中,一般常對以下選項進行設置。
&#58904;&&&& &&&&&&&& name:&&&&&&&&&&&&該控件對應源代碼中的名稱;
&#58904;&&&& &&&&&&&& font:&&&&&&&&&&&&設置表&#26684;內部的字體;
&#58904;&&&& &&&&&&&& count:&&&&&&&&&&&保存項目的數目;
&#58904;&&&& &&&&&&&& currentRow:&&&&&&保存當前項目的行;
&#58904;&&&& &&&&&&&& sortingEnabled:&&是否對item排序。
&&&&&&&&以下是一些常用的成員函數:
1) QListWidget::QListWidget ( QWidget *parent = 0 )
// 構造一個父對象为parent的ListWidget。
2) void QListWidget::addItem ( const QString & label )
// 添加一個新的項目,在新添加的項目中添加label標簽。
3) void QListWidget::addItem ( QListWidgetItem *item )
// 添加項目item。
4) void QListWidget::addItems ( const QStringList & labels )
// 添加一列項目。
5) void QListWidget::clear () [slot]
// 清除該ListWidget中的所有項目。
6) QListWidgetItem *QListWidget::currentItem () const
//返回當前活動項目。
7) void QListWidget::editItem ( QListWidgetItem *item )
//如果項目item是可編輯的,開始編輯項目item。
8) QList&QListWidgetItem *& QListWidget::findItems( constQString & text, QT::MatchFlags flags ) const
//查找匹配字符串text的項目,並返回查找結果。
9) void QListWidget::insertItem ( int row, QListWidgetItem *item )
//在行row處插入項目item。
10) void QListWidget::insertItem ( int row, const QString &label )
//這是一個重載函數,函數功能同9),在行row處插入標簽为label的新項目。
11) voidQListWidget::insertItems ( int row, const QStringList & labels )
//在行row處插入一列項目。
12) QListWidgetItem *QListWidget::item ( int row ) const
//返回行row處的項目,如果行row處沒有項目則返回0。
13) QListWidgetItem*QListWidget::itemAt ( const QPoint & p ) const
//返回點p處的項目。
14) QListWidgetItem *QListWidget::itemAt ( int x, int y ) const
//返回坐標(x,y)處的項目。
15) QWidget *QListWidget::itemWidget ( QListWidgetItem *item ) const
//返回項目item處顯示的控件。
16) QListWidgetItem *QListWidget::takeItem ( int row )
// 移除行row處的項目,並返回項目控件。
17) void QListWidget::removeItemWidget ( QListWidgetItem *item )
//刪除項目item處的控件。
18) int QListWidget::row ( const QListWidgetItem *item ) const
//返回項目item所在的行。
19) QList&QListWidgetItem *& QListWidget::selectedItems ()const
//返回所有被選中的項目的控件。
20) void QListWidget::setCurrentItem ( QListWidgetItem *item )
//設置項目item为當前項目。
21) void QListWidget::setItemWidget ( QListWidgetItem *item, QWidget*widget )
//設置控件widget为項目item的顯示控件。
22) void QListWidget::setItemWidget ( QListWidgetItem *item, QWidget*widget )
//這是個重載函數,函數功能同23)。
23) voidQListWidget::sortItems ( QT::SortOrder order = QT::AscendingOrder )
//把項目按照order進行排序。
下面给出一個例子,效果如下圖:
&&&&&&&&代碼如下:
//flowchartsymbolpicker.h
#ifndef FLOWCHARTSYMBOLPICKER_H
#define FLOWCHARTSYMBOLPICKER_H
#include &QDialog&
#include &QMap&
#include &QIcon&
class QDialogButtonB
class QListW
class FlowChartSymbolPicker : public QDialog
FlowChartSymbolPicker(const QMap&int, QString& &symbolMap,
QWidget *parent = 0);
int selectedId() const { }
void done(int result);
~FlowChartSymbolPicker();
private slots:
void message();
QIcon iconForSymbol(const QString &symbolName);
QListWidget *listW
QDialogButtonBox *buttonB
#endif // FLOWCHARTSYMBOLPICKER_H
//flowchartsymbolpicker.cpp
#include &QListWidget&
#include &QListWidgetItem&
#include &QDialogButtonBox&
#include &QVBoxLayout&
#include &QMessageBox&
#include &flowchartsymbolpicker.h&
FlowChartSymbolPicker::FlowChartSymbolPicker(const QMap&int, QString& &symbolMap,
QWidget *parent)
: QDialog(parent)
listWidget = new QListW
listWidget-&setIconSize(QSize(60,60));
listWidget-&setEditTriggers(QAbstractItemView::AnyKeyPressed);
QMapIterator&int, QString& i(symbolMap);
while (i.hasNext()) {
QListWidgetItem *item = new QListWidgetItem(i.value(), listWidget);
item-&setIcon(iconForSymbol(i.value()));
item-&setData(Qt::UserRole, i.key());
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok |
QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(message()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
QVBoxLayout *layout = new QVBoxL
layout-&addWidget(listWidget);
layout-&addWidget(buttonBox);
setLayout(layout);
setWindowTitle(tr(&Flowchart Symbol Picker&));
void FlowChartSymbolPicker::message()
QMessageBox::about(this, tr(&AHA&),tr(&Thanks&));
void FlowChartSymbolPicker::done(int result)
if (result == QDialog::Accepted) {
QListWidgetItem *item = listWidget-&currentItem();
id = item-&data(Qt::UserRole).toInt();
QDialog::done(result);
QIcon FlowChartSymbolPicker::iconForSymbol(const QString &symbolName)
QString fileName = &:/images/& + symbolName.toLower();
fileName.replace(' ', '_');
return QIcon(fileName);
FlowChartSymbolPicker::~FlowChartSymbolPicker()
//main.cpp
#include &flowchartsymbolpicker.h&
#include &QApplication&
int main(int argc, char *argv[])
QApplication a(argc, argv);
QMap&int, QString&
map.insert(77, QObject::tr(&7&));
map.insert(78, QObject::tr(&11&));
map.insert(79, QObject::tr(&12&));
map.insert(80, QObject::tr(&13&));
map.insert(81, QObject::tr(&14&));
map.insert(82, QObject::tr(&15&));
map.insert(83, QObject::tr(&16&));
map.insert(84, QObject::tr(&ali5&));
map.insert(85, QObject::tr(&l5&));
map.insert(86, QObject::tr(&oh5&));
FlowChartSymbolPicker window(map);
window.resize(300, 300);
window.show();
return a.exec();
&&&&&&&&構造函數接收一個QMap關聯容器對象,這個容器存儲了每個項的ID和名字,在構造函數中我們遍曆這個容器的每個元素,並用該元素的鍵和&#20540;設置QListWidgetItem對象的名字和ID。QListWidget有幾個角色(role),每個角色都有一個關聯的QVariant,最常用的角色有:Qt::DisplayRole,
Qt::EditRole, Qt::IconRole, Qt::UserRole,並且這些角色都有方便的設置和獲取函數[setText(), setIcon()]等。通過指定一個大於等於Qt::UsetRole的&#20540;就可以定義自定義的角色。在本例中,使用Qt::UserRole存儲每一個項的ID。
&&&&&&&&Done()函數式由QDialog重新實現的。當用戶單擊OK或者Cancel按鈕時,就會調用它。如果用戶單擊OK,就獲得相應的項,並且使用data()函數提取ID。如果對項的文本感興趣,則可以通過調用item-&data(Qt::DiaplayRole).toString()或者更为方便的item-&text()來獲取文本。
&&&&&&&&默認情況下,QListWidget是只讀的。如果想讓用戶編輯這些項,則可以使用QAbstractItemView:: setEditTriggers()設置這個視圖的編輯觸發器。例如:QAbstractItemView::AnyKeyPressed這個設置&#20540;的意思是:用戶只要一開始輸入就進入項的編輯狀態。類&#20284;的,也可以提供一個Edit(編輯)按鈕(還可以提供Add按鈕和Delete按鈕),同時使用信號槽連接,這样就可以使用程序來控制編輯操作了。
&&&&&&&&我們還可以設置viewModel這個参數,來確定使用不同的視圖進行顯示。比如,我們使用下面的語句:&&
&&&&&&&&listWidget-&setViewMode(QListView::IconMode);
&&&&&&&&程序的效果如圖:
------分隔線----------------------------
下一篇:沒有了
添加war包到hive的lib目錄:
下載添加到/usr/lib/hive/lib/hive-hwi-0.9....
原文請移步《FreeMarker中文手冊:數值和類型》
轉自:/blog.chinaunix.net/uid--id-2814490.html
應用場景:
& & & & 作为SQL Server安全審計的一部分...
數據庫原理
數據庫系統(Database System)是用於組織和存取...
&&&有人說:“高考完了,我們就解放了”。&&nb...

我要回帖

更多关于 qtreewidgetitem遍历 的文章

 

随机推荐