C++ QComboBox和HeaderItem

C++ QComboBox和HeaderItem,c++,qt,qcombobox,C++,Qt,Qcombobox,我有一个QComboBox和QStandardItemModel,其中包含一个名为One的项目。 我希望QComboBox有一个标题(我不确定这是否是正确的技术术语…),它始终是相同的。 下图正是我想要的。我希望打印“标题”,而不是在按下列表的按钮旁边显示“一”(不是列表的一个元素)。 重要的是,复选框是必需的(这就是我使用QComboBox的原因) 我尝试了函数model.setHorizontalHeaderItem(),但它不起作用(请参见下面的代码)。 请帮帮我 #include &l

我有一个
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();
}
#包括
#包括
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QCOMBOX*组合框=新的QCOMBOX();
QS标准模型(1,1);
QStandardItem*项=新QStandardItem(QString(“一”);
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setData(Qt::Unchecked,Qt::CheckStateRole);
model.setItem(0,0,item);
model.setHorizontalHeaderItem(0,新的QStandarItem(“标题”));
组合框->设置模型(&model);
组合框->显示();
返回app.exec();
}

您可以执行以下操作:

QTreeView *view = new QTreeView();
QStandardItemModel *model = new QStandardItemModel();

ui->comboBox->setModel( model );
ui->comboBox->setView( view );

for ( int i = 0; i < 10; i++ )
{
    QStandardItem *item = new QStandardItem();
    const QString text = QString( "Item: %1" ).arg( i + 1 );
    item->setText( text );
    model->appendRow( item );
}

model->setHorizontalHeaderLabels( QStringList() << "It's a column" );
QTreeView*view=new QTreeView();
QStandardItemModel*model=新QStandardItemModel();
用户界面->组合框->设置模型(模型);
用户界面->组合框->设置视图(视图);
对于(int i=0;i<10;i++)
{
QStandardItem*项=新的QStandardItem();
常量QString text=QString(“项:%1”).arg(i+1);
项目->设置文本(文本);
模型->追加行(项目);
}

模型->设置水平头标签(QStringList()我认为您需要创建自己的模型并实现
headerData
成员函数。您需要的所有信息都在这里:您需要设置自定义视图以显示带有标题的下拉内容。@DmitrySazonov我认为他指的不是标题。我想他希望组合框显示标题,下拉框显示列表没有标题的视图…无论如何,不清楚他想要什么…@luliu他想要一个标题。很清楚。你对headerData函数的评论是无用的。我试图解释清楚我想要的是什么。谢谢。不,我删除了我的答案。这不是解决方案。我只是演示如何使用颜色设置项目,以及使用信号和插槽推荐的肮脏技巧。你的答案对于Qt解决方案来说是很自然的。我早些时候投了赞成票。