2012-12-18 23 views
0

使用的paintEvent()来修改QCombobox当前项我有具有3项即项目1,项目2和项目3我加入的.ui文件这3个项目,还添加了一个图像中的每个的所有的组合框使用资源文件。现在,当我运行该应用程序时,它会显示组合框中的第一个项目以及左侧的图像。当我点击下拉菜单时,我可以看到图像中的所有项目。如何Qt中

我基本上想要做的仅仅是显示在下拉列表的图像,当用户点击下拉菜单,它应该显示的图像和文字了。

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

Image 1 Item 1 
Image 2 Item 2 
Image 3 Item 3 

当我运行的应用程序,它应该在组合框中作为

Image1

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

任何人都可以帮助我吗? :)

我该如何实现它?

回答

0

您应该继承QComboBox并重新实现void QComboBox::showPopup() [virtual]
P.S.如果您重新实现此功能以显示自定义弹出窗口,请确保调用hidePopup()来重置内部状态。
我的第二个想法是为组合框实现一个模型,但我现在不太喜欢弹出式元素的任何轮廓。

+0

感谢您的回复。如果我重新实现这个功能,它会显示一个自定义的弹出窗口。但是我想要的是当我运行应用程序时默认显示图像。当我点击Popup时,它应该显示正在发生的一切。 – Gojira

+0

此外还有一个无效的QComboBox :: setView(QAbstractItemView * itemView),它将组合框弹出框中使用的视图设置为给定的itemView。组合框取得了该视图的所有权。 –

+0

我认为ShowPopup()没有达到它的正确方法。 'paintevent'是应用程序绘制当前选择时使用的东西 – Gojira