Qt 4.7 - всплывающие подсказки и всплывающее окно QComboBox под заголовком OS X 10.12

Окружающая среда

  • Построено под 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, не имел никакого значения; всплывающая подсказка была такой же пустой. Кроме того, я вижу, что цвет фона всплывающей подсказки не бледно-желтый, он должен быть либо - он белый.

Это похоже на то, что система полностью потеряла следы того, что она должна делать, когда появляется всплывающая подсказка /popupmenu.

[ИЗМЕНИТЬ 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.). Нет выбора цвета или видимой реакции, либо графически, кроме выбранного (невидимого) элемента и всплывающего меню.

Ответ 1

Из-за того, что ваша версия Qt устарела, может случиться так, что "собственный" механизм рендеринга нарушен. Вы можете избежать этой проблемы, используя вместо этого механизм рендеринга растра

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