gpt4 book ai didi

c++ - 如何为 QComboBox 的弹出菜单指定不同于框本身显示的字符串?

转载 作者:太空狗 更新时间:2023-10-29 21:37:26 25 4
gpt4 key购买 nike

我有一个 Qt/C++ 应用程序,它在拥挤的窗口中包含许多(不可编辑的)QComboBox 小部件。用户可以单击这些组合框以从各种类型的单位中进行选择。为了使窗口宽度易于管理,QComboBoxes 需要尽可能地瘦。

从概念上讲,组合框中可用的单位类型是这些:

feet
meters
milliseconds
[etc]

...但是为了让 QComboBoxes 尽可能瘦,它们在屏幕上用缩写表示,例如:

f
m
mS
[etc]

...到目前为止一切顺利,但管理层现在希望在出现的弹出菜单中显示非缩写字符串(“英尺”、“米”、“毫秒”等)当用户单击 QComboBox 时...同时在框中保留缩写形式。这在逻辑上似乎是可行的(因为弹出菜单只是短暂出现,在 GUI 的其余部分之前,没有根本原因不能使它变宽),但我不清楚如何使用 QComboBox 实现它。

有没有“正确的方法”来做到这一点(除了破解 Qt 组合框代码)?

最佳答案

委托(delegate)会更简单:

class Delegate : public QStyledItemDelegate {
public:
QString displayText(const QVariant & value, const QLocale & locale) const override {
// value contains one of your short labels {"mS", "f", "m"}
return /* Just return the corresponding long label */;
}
};

yourComboBox->setItemDelegate(new Delegate);

关于c++ - 如何为 QComboBox 的弹出菜单指定不同于框本身显示的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733118/

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