0

我想将QCheckBox中TICK的颜色从黑色改成深蓝色,我试过QSS,但是不行:

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

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

我是否必须重载其paintEvent 才能执行?

谢谢。

------------</p>

现在我正在尝试 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 ?这是什么意思?

4

1 回答 1

4

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

:/images/checkbox_checked.png

PATHqstylesheet 参考中使用的s 是资源文件。当您在 Qt Creator 中创建资源文件时,它允许您将图像存储在编译到您的 exe 中的内置目录中。

:/exe中此资源路径的根也是如此。

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

我认为您无法PATH从 QStyleSheet 中获取您的 exe。您可以在运行时将其放入,方法是在运行时使用以下内容构建 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 的实际路径不同,您需要将您的图像文件夹放在不同的目录中,以便找到它们。

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

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

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

system("dir"); // for windows

或者

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

是什么:意思?

此外,:QStyleSheet 中的 引用了紧靠左侧的项目的子组件或属性。它的行为几乎与 css 相同,但在 css 中它是 a .

所以它是这样的:

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

有点像钻取一棵大树的设置。您可以通过在 Qt Designer 的属性窗格中四处挖掘来可视化其中的很多。

希望有帮助。

于 2013-07-23T05:24:06.880 回答