我如何在QComboBox中移动文本上方的图标
How can I move the icon above text in QComboBox
我一直在看QComboBox源文件一段时间了,我不知道我需要改变什么,以便图标位于QComboBox文本上方。
|-----------------------|
| ----- |
| |icn| |
| ----- |
| Text label here |
-------------------------
QCombobox中的绘制方法非常简单,引用了QStyleOptionComboBox,但我不认为我想在这里做任何改变,因为这会影响可移植性。
我是不是应该发明一些像QComboBox那样的新东西呢?
我应该补充说,如果我正在考虑改变ListView和选定的项目,即按钮部分。
为了在组合框的下拉视图中处理图标的(装饰)位置,您需要覆盖其视图选项QAbstractItemView::viewOptions()
。让我们创建一个自定义视图,并用我们的视图替换原有的组合框视图:
class ComboView : public QListView
{
protected:
QStyleOptionViewItem viewOptions() const
{
// Set icon on the top and center of combo box item.
QStyleOptionViewItem option = QListView::viewOptions();
option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
option.decorationPosition = QStyleOptionViewItem::Top;
option.displayAlignment = Qt::AlignCenter;
return option;
}
};
组合框:
QComboBox cb;
cb.setView(new ComboView); // Sets the custom view.
cb.addItem(QIcon("icon.png"), "Item1");
cb.addItem(QIcon("icon.png"), "Item2");
cb.show();
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在MFC中的静态文本控件上插入图标?
- 如何使用IExecuteCommand和动词在上下文菜单外壳扩展中显示本地化文本和自定义图标?
- 如何创建图标上显示文本的QPushButton
- 如何更改Shell_NotifyIcon设置的systray图标文本样式
- 在文本上方为 MFC 按钮制作图标
- 添加图标时,QMenu 项目文本消失
- 在静态文本控件上设置图标
- 如何设置文本下面的QToolButton在QT不低于图标
- 我如何在QComboBox中移动文本上方的图标