【发布时间】:2014-10-23 12:47:14
【问题描述】:
我有一个 QComboBox 和一个 QStandardItemModel,其中包含一个名为 One 的项目。
我希望QComboBox 有一个标题(我不确定这是正确的技术术语……),它总是一样的。
下图正是我想要的。我不想在按下列表的按钮旁边放置“一个”,而是希望打印“标题”(这不是列表的元素)。
重要的是,复选框是强制性的(这就是我使用 QComboBox 的原因)。
我尝试了函数model.setHorizontalHeaderItem(),但它不起作用(参见下面的代码)。
请帮帮我。
#include <QApplication>
#include <QComboBox>
#include <QStandardItemModel>
int main( int argc, char **argv )
{
QApplication app( argc, argv );
QComboBox* comboBox = new QComboBox();
QStandardItemModel model( 1, 1 );
QStandardItem *item = new QStandardItem( QString("One") );
item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
item->setData ( Qt::Unchecked, Qt::CheckStateRole );
model.setItem(0, 0, item);
model.setHorizontalHeaderItem( 0, new QStandardItem( "Header" ) );
comboBox->setModel( &model );
comboBox->show();
return app.exec();
}
【问题讨论】:
-
我认为您需要创建自己的模型并实现
headerData成员函数。您需要的所有信息都在这里:qt-project.org/doc/qt-4.8/… -
您需要设置自定义视图以显示带有标题的下拉内容。
-
@DmitrySazonov 我不认为他指的是那个标题。我认为他希望组合框显示标题,而下拉列表显示没有标题的列表视图......无论如何,他想要什么都不清楚......
-
@luliu 他想要一个标题。很明显。您对 headerData 函数的评论是无用的。
-
我试图在上面清楚地解释我想要什么。谢谢。