Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Qt中使用PaintEvent()修改QCombobox当前项_Qt_Combobox_Qt4_Paintevent - Fatal编程技术网

如何在Qt中使用PaintEvent()修改QCombobox当前项

如何在Qt中使用PaintEvent()修改QCombobox当前项,qt,combobox,qt4,paintevent,Qt,Combobox,Qt4,Paintevent,我有一个组合框,它有3个项目,即项目1、项目2和项目3。我在.ui文件中添加了这3个项目,还使用资源文件为每个项目添加了一个图像。现在,当我运行该应用程序时,它会显示combobox中的第一个项目以及左侧的图像。当我单击下拉菜单时,我可以看到所有项目以及图像 我主要想做的是在组合框中显示图像,当用户单击下拉菜单时,它也应该显示图像和文本 场景:组合框中的项目和图像添加如下: Image 1 Item 1 Image 2 Item 2 Image 3 Item 3 当我运行应用程序时,它应该在组

我有一个组合框,它有3个项目,即项目1、项目2和项目3。我在.ui文件中添加了这3个项目,还使用资源文件为每个项目添加了一个图像。现在,当我运行该应用程序时,它会显示combobox中的第一个项目以及左侧的图像。当我单击下拉菜单时,我可以看到所有项目以及图像

我主要想做的是在组合框中显示图像,当用户单击下拉菜单时,它也应该显示图像和文本

场景:组合框中的项目和图像添加如下:

Image 1 Item 1
Image 2 Item 2
Image 3 Item 3
当我运行应用程序时,它应该在组合框中显示为

Image1

因为默认情况下会显示第一项。我认为这可以在绘制当前选择时完成,QCombobox使用重新植入:
void MyCombo::paintEvent(QPaintEvent*e)
,这是我不知道的

有人能帮我吗??)


如何实现它???

您应该继承一个QComboBox并重新实现
void QComboBox::showPopup()[virtual]

另外,如果重新实现此函数以显示自定义弹出窗口,请确保调用hidePopup()以重置内部状态。

我的第二个想法是为combobox实现一个模型,但我现在不知道弹出式元素是否存在任何障碍。

谢谢您的回复。如果我重新实现此功能,它将显示一个自定义弹出窗口。但我想要的是在运行应用程序时默认只显示图像。当我点击弹出窗口时,它应该显示正在发生的一切。还有一个空的QComboBox::setView(QAbstractItemView*itemView),它将组合框弹出窗口中要使用的视图设置为给定的itemView。组合框拥有视图的所有权。我认为ShowPopup()不是实现它的正确方法
paintevent
是应用程序绘制当前选择时使用的工具。我认为您应该添加一个列表容器来存储项目字符串,并在隐藏setItemText(i“”)时为每个项目显示弹出的setItemText(i“…”);