环境
- 在 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 ”渲染引擎已损坏。 您可以改用“光栅”渲染引擎来避免此问题
关于c++ - Qt 4.7 - 工具提示和 QComboBox 弹出窗口在 OS X 10.12 下出现空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317062/