我想将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?这是什么意思?
答案 0 :(得分:4)
:/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中进行挖掘来可视化其中的许多内容。
希望有所帮助。