如何在CheckBox小部件中更改tick的颜色?

时间:2013-07-23 02:29:29

标签: qt path qcheckbox

我想将QCheckBox中的TICK颜色从黑色变为深蓝色,我尝试了QSS,但它不起作用:

QCheckBox {
  background-color:blue;
  color:blue;
}

使用QSS仅更改背景颜色,但我想更改刻度线的颜色。

我是否应该重载其paintEvent来做它?

感谢。

-----------

现在我正在尝试用QSS来解决它,

 QCheckBox {
   spacing: 5px;
}

 QCheckBox::indicator {
 width: 13px;
 height: 13px;
 }

 QCheckBox::indicator:unchecked {
   image: url(:/images/checkbox_unchecked.png);
 }

 QCheckBox::indicator:unchecked:hover {
   image: url(:/images/checkbox_unchecked_hover.png);
 }

 QCheckBox::indicator:unchecked:pressed {
   image: url(:/images/checkbox_unchecked_pressed.png);
 }

 QCheckBox::indicator:checked {
   image: url(:/images/checkbox_checked.png);
 }

 QCheckBox::indicator:checked:hover {
   image: url(:/images/checkbox_checked_hover.png);
 }

 QCheckBox::indicator:checked:pressed {
   image: url(:/images/checkbox_checked_pressed.png);
 }

 QCheckBox::indicator:indeterminate:hover {
   image: url(:/images/checkbox_indeterminate_hover.png);
 }

 QCheckBox::indicator:indeterminate:pressed {
   image: url(:/images/checkbox_indeterminate_pressed.png);
 }

这是来自Qt ref的qss示例,我如何获得PATH?这是什么意思?

1 个答案:

答案 0 :(得分:4)

StyleSheets中的路径(通常在Qt中)

:/images/checkbox_checked.png

qstylesheet引用中使用的PATH是资源文件。在Qt Creator中创建资源文件时,它允许您将图像存储在内置目录中,该目录将编译到您的exe中。

所以:/是exe中此资源路径的根。

http://qt-project.org/doc/qt-4.8/resources.html

我认为你不能从QStyleSheet中获取你的exe的PATH。您可以在运行时将其放入运行中,方法是在运行时使用以下内容构建QStyleSheet:

widget->setStyleSheet(QString("first part of stylesheet") 
    + path_string + QString("another part of stylesheet"));

您可能应该处理此问题的方法是使用相对路径。因此,您可以:/images/image.png代替./images/image.png,其中“images”文件夹位于您的exe旁边。

./application/application.exe
./application/images/image.png

这就是相对路径的工作方式。

另外,您应该注意工作路径可能是检查的内容,而不是应用程序目录:

QDir::currentPath();

http://qt-project.org/doc/qt-5.0/qtcore/qdir.html#setCurrent

http://en.wikipedia.org/wiki/Working_directory

如果您的工作目录(或者换句话说,运行exe的文件夹)与exe的实际路径不同,则需要将images文件夹放在不同的目录中,以便找到它们。 / p>

您还可以使用...符号来描述如何在工作目录中上下移动以查找文件夹或文件。 .表示当前目录,..表示距离根目录更近的一个目录。

在静态方法中阅读有关QDir和QApplication的文档,以获取有关如何获取应用程序目录和当前工作目录的更多信息。

有时我会把这一行放在我的代码中并查看输出以查看工作目录:

system("dir"); // for windows

system("pwd"); // for linux/mac

:是什么意思?

此外,QStyleSheet中的:正在将项目的子组件或属性引用到左侧。它的行为几乎与css相同,但在css中它是.而不是。

所以它是这样的:

MyClassName::component-of-class:property-of-component:option-of-property
{
    property-of-option: setting-for-that-options-property;
}

有点像钻一棵大树的设置。 您可以通过在属性窗格中的Qt Designer中进行挖掘来可视化其中的许多内容。

希望有所帮助。