c++ - Qt 4.7 - 工具提示和 QComboBox 弹出窗口在 OS X 10.12 下出现空白

标签 c++ macos qt

环境

  • 在 OS X 10.6.8 下构建(在那里也能正常工作。)
  • 在 OS X 10.12 下运行的应用程序
  • Qt 4.7(必须使用它,10.6.8 遗留支持问题)
  • Qt Creator 2.1.0

问题

从 OS X 10.6.8 到 OS X 10.11,工具提示和 QComboBox 弹出菜单行为都很好。

在10.12下,工具提示和QComboBox弹出菜单的弹出功能是空白的。

工具提示是空白的黄色纸,背景看起来不错,但没有文字。我在 Qt Designer 2 中设置工具提示内容;那里没什么特别的。在每种情况下都只是普通文本。

QComboBox 弹出菜单缺少文本和复选标记。当弹出窗口关闭时,小部件只显示一行,所选项目确实显示。您也可以指向它,滚动鼠标滚轮,项目会按预期变化。它只是空白的项目弹出列表。

对于QComboBox弹出菜单,这里有一个使用的例子有问题:

int index;
ui->fftSizecomboBox->addItem("2048 pts",  2048);
ui->fftSizecomboBox->addItem("4096 pts",  2048 * 2);
ui->fftSizecomboBox->addItem("8192 pts",  2048 * 4);
ui->fftSizecomboBox->addItem("16384 pts", 2048 * 8);
ui->fftSizecomboBox->addItem("32768 pts", 2048 * 16);
ui->fftSizecomboBox->addItem("64K pts",   2048 * 32);
ui->fftSizecomboBox->addItem("128K pts",  2048 * 64);
ui->fftSizecomboBox->addItem("256K pts",  2048 * 128);
ui->fftSizecomboBox->addItem("512K pts",  2048 * 256);
ui->fftSizecomboBox->addItem("1M pts",    2048 * 512);
ui->fftSizecomboBox->addItem("2M pts",    2048 * 1024);
ui->fftSizecomboBox->addItem("4M pts",    2048 * 2048);
index = ui->fftSizecomboBox->findData(m_FftSize);
if ((index < 0) || (index > 11))
{
    index = 1;
    m_FftSize = 4096;
}
ui->fftSizecomboBox->setCurrentIndex(index);

对我来说,这一切似乎都很普通。我不知道为什么它在所有其他 OS X 版本下都可以工作,而在 10.12 下却停滞不前

此外,在我编写的另一个应用程序中,我还使用了 QComboBox 弹出菜单,并且它们在该应用程序中工作在 10.12 下,因此这也意味着这是我正在做的事情。

除了单击弹出菜单使其显示项目列表之外,没有任何反应。我什至没有收到任何消息;当我退出对话框时,然后我会查看它以查看选择的是什么(或者我什至不这样做,如果对话框已被取消。)

我向 Apple 提交了一份错误报告,他们已经忽略了几个月,所以他们要么不关心,要么不认为这是他们的问题(我猜它可能不是,即使它只是出现在 OS X 10.12 中)当然,Apple 经常在操作系统中留下错误,所以就是这样。

[编辑 1]

为了查看是否是调色板颜色问题,我尝试了其他方法,即加载带有富文本的工具提示之一,更改字体颜色,这样绘画就不会仅使用调色板颜色来完成。在 10.6 下工作,但在 10.12 下工作,没有任何区别;工具提示是空白的。另外,我看到工具提示背景颜色不是它应该是的淡黄色,而是白色。

一旦工具提示/弹出菜单出现,系统就好像完全忘记了它应该做什么。

[编辑 2]

这是我用于 QComboBox 的样式表代码:

QComboBox::dropdown {
background: rgb(0,0,127);
color: rgb(0,255,0); /* color of dropped text*/
background-color: rgb(0,0,127); /* color of dropped backdrop*/
selection-color: rgb(0,255,0); /* color of sel text */
selection-background-color: rgb(0,0,0); /* color of sel backdrop */
}

QComboBox {
color: rgb(0,255,0); /* color of dropped text*/
background-color: rgb(0,0,0); /* color of dropped backdrop*/
selection-color: rgb(0,255,0); /* color of sel text */
selection-background-color: rgb(0,0,0); /* color of sel backdrop */
alternate-background-color: rgb(0,0,127);
alternate-selection=background-color: rgb(255,255,255);
}

此样式表在 10.6.8 下完全正确。在 10.12 下,主组合框正确呈现,黑色背景上的绿色文本,但弹出/下拉列表是纯白色,没有文本;它应该是中蓝色 (127) 上的绿色。除了选择了正确的(不可见的)项目并且弹出菜单消失之外,在图形上也没有选择颜色或可见 react 。

最佳答案

由于您的 Qt 版本已过时,可能是“ native ”渲染引擎已损坏。 您可以改用“光栅”渲染引擎来避免此问题

http://doc.qt.io/qt-4.8/qapplication.html#setGraphicsSystem

关于c++ - Qt 4.7 - 工具提示和 QComboBox 弹出窗口在 OS X 10.12 下出现空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317062/

相关文章:

c++ - 带有 setjmp 的 C++ 对象上的警告 "might be clobbered"

objective-c - 无需启动应用程序即可提供 OSX 服务?

objective-c - 更改 NSButton 的背景颜色

c++ - QT 列表追加中报告的 Valgrind 内存泄漏

c++ - 如何使用 QProcess 从特定文件夹执行类似 "qmake -v > 1.txt"的命令?

qt - qml 使用 Row 在中心对齐组件

c++ - 为什么从函数返回 'const' 时,原始类型和用户定义类型的行为不同?

c++ - Boost python 和虚拟类

C++ 友元/多态类错误

objective-c - sed 正则表达式从方法声明中提取选择器 (Obj-C)