如何使QLabel看起来像所有平台上的QListWidget

时间:2018-06-07 13:08:46

标签: qt widget stylesheet qstyle qpalette

我有一个QListWidget,我希望用显示错误信息的QLabel无缝替换。为了使它无缝,我需要QLabel看起来与空的QListWidget栏相同,居中的错误文本。我希望无论在哪个平台上运行,它都能正常工作。

在Ubuntu中运行我几乎就是通过设置QLabel属性:

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

QListWidget的外观不会以任何方式从默认样式中更改,我需要它保持原样。

我设置的边框颜色不太合适,但即使我检查它实际上应该是什么并且硬编码为我的平台正确,我也不能保证它在其他平台上是正确的。有没有办法可以获取QListWidget的样式或颜色属性,并使用它来改变我的QLabel样式或颜色属性,以保证它总是看起来正确?或者还有其他选择我还没考虑过吗?

如果我删除border-color属性,它们目前看起来像这样:

QListWidget未改变:

enter image description here

QLabel应用了这个:

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

enter image description here

皮特

修改

我找不到合适的QPalette :: ColorRole来设置边框颜色,也找不到合适的QStyleOption来表示QListView的样式......我可以获得QListView' s QStyleOption就是这样:

QStyleOption styleOption = listView.initFrom(pubSubNodeView_);

但它看起来并不合适。如果它有效,我将如何使用它来设置QLabel的样式?或者是否有人知道QStyleOption代表QListView?

0 个答案:

没有答案