Как сделать QLabel похожим на QListWidget на всех платформах

У меня есть QListWidget, который я хочу заменить на QLabel, отображающий сообщение об ошибке. Чтобы он был бесшовным, мне нужно, чтобы QLabel выглядел идентично пустой строке QListWidget по центру текста ошибки. Я хочу, чтобы это также работало независимо от того, на какой платформе он работает.

Работая в Ubuntu, я почти на месте, установив свойства QLabel так:

    errorLabel->setStyleSheet("background-color: white; border: 1px solid #AAAAAA; ");
    errorLabel->setFrameShape(QFrame::Panel);

Внешний вид QListWidget никак не отличается от стиля по умолчанию, и мне нужно, чтобы он оставался таковым.

Цвет границы, который я установил, не совсем правильный, но даже если я проверю, каким он должен быть на самом деле, и жестко закодирую его, чтобы он был корректным для моей платформы, я не могу гарантировать, что он будет корректным на других платформах. Есть ли способ, которым я могу получить свойства стиля или цвета QListWidget и использовать их для изменения стиля или цвета QLabels, чтобы гарантировать, что он всегда будет выглядеть правильно? Или есть другой вариант, который я не рассматривал?

Если я удалю свойство border-color, они в настоящее время выглядят так:

QListWidget без изменений:

QLabel с этим приложением:

errorLabel->setStyleSheet("background-color: white; border: 1px solid; "); 
errorLabel->setFrameShape(QFrame::Panel);

Пит

Редактировать:

Я не могу найти подходящий QPalette::ColorRole для установки цвета границы, и при этом я не могу найти подходящий QStyleOption для представления стиля QListView... Я могу приобрести QStyleOption QListView как таковой:

QStyleOption styleOption = listView.initFrom(pubSubNodeView_);

Но это не выглядит действительным. Если бы он был действительным, как бы я использовал его, чтобы установить стиль QLabel? Или есть QStyleOption кто-нибудь знает о том, что представляет QListView?

0 ответов

Другие вопросы по тегам