gpt4 book ai didi

c++ - 如何在 QComboBox 中将图标移动到文本上方

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:33 27 4
gpt4 key购买 nike

我查看 QComboBox 源文件已经有一段时间了,但我不知道我需要更改什么才能使图标位于 QComboBox 中文本的上方。

|-----------------------|
| ----- |
| |icn| |
| ----- |
| Text label here |
-------------------------

QCombobox 中的 paint 方法非常简单,并引用了一个名为 QStyleOptionComboBox 的东西,但我不认为我想在这里进行更改,因为这会影响可移植性。

我会更好地发明一些新的东西来像 QComboBox 一样行动和行为吗?

我应该补充说,我正在考虑同时更改 ListView 和所选项目,即按钮部分。

最佳答案

为了处理组合框下拉 View 中图标(装饰)的位置,您需要覆盖其 View 选项 QAbstractItemView::viewOptions()。让我们创建一个自定义 View 并用我们的 View 替换 native 组合框 View :

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++ - 如何在 QComboBox 中将图标移动到文本上方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23471184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com