Css Qt自定义用户主题
我正在尝试设置一种方法,用于使用外部文件创建主题。目前,我正在读取一个文件并将其放入QString,然后将其放入“qApp->setStyleSheet(string);”中,这似乎是可行的,但是,当我给按钮的背景上色时,它似乎不起作用。同样的css也直接在qt designer中起作用 功能:Css Qt自定义用户主题,css,qt,Css,Qt,我正在尝试设置一种方法,用于使用外部文件创建主题。目前,我正在读取一个文件并将其放入QString,然后将其放入“qApp->setStyleSheet(string);”中,这似乎是可行的,但是,当我给按钮的背景上色时,它似乎不起作用。同样的css也直接在qt designer中起作用 功能: void SeniorProject::themer(QString theme_name) { qDebug() << theme_name; QString file =
void SeniorProject::themer(QString theme_name)
{
qDebug() << theme_name;
QString file = QCoreApplication::applicationDirPath()
+ "/themes/" + "default" + "/theme.style";
qDebug() << "file = " + file;
QFile themeFile(file);
QString themeStyle;
if (themeFile.open(QIODevice::ReadOnly))
{
QTextStream in (&themeFile);
themeStyle = in.readAll();
themeFile.close();
}
else
{
qDebug() << "error";
}
qApp->setStyleSheet(themeStyle);
update();
}
QPushButtons中的背景是我目前的问题,样式表正确加载并更新(我可以判断,因为按钮上的边框实际上会更改为我想要的),但背景似乎不起作用。有人能帮我吗?谢谢。我找到了背景不起作用的原因。如果您之前设置了整个小部件的背景,而该小部件是您试图通过QT Designer设置样式的项的父项,则在未使用QT Designer设置背景时,将无法设置背景。您希望完全透明(255个中的1个)的背景是什么?请尝试
rgba(96171248255)
@DmitrySazonov,它是由qt creator的渐变生成的。我将其设置为255,但是问题仍然存在。将透明度设置为1并直接在creator中设置样式也适用于1。
QPushButton#exit {
color: rgb(220, 0, 0);
border: none;
outline: none;
}
QPushButton#exit:hover {
color: rgb(255, 8, 0);
}
QPushButton#exit:Pressed {
color: rgb(150, 0, 0);
}
QFrame#mainbox QPushButton {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(122,188,255,1), stop: 0.44 rgba(96,171,248,1), stop: 1 rgba(64,150,238,1));
border: .1px outset rgb(122, 188, 255);
border-radius:4px;
}
QFrame#mainbox QPushButton:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(147,201,255,1), stop: 0.44 rgba(133,190,247,1), stop: 1 rgba(90,163,237,1));
border: .1px outset rgb(122, 188, 255);
border-radius:4px;
}
QFrame#mainbox QPushButton:pressed {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(84,169,255,1), stop: 0.44 rgba(66,155,244,1), stop: 1 rgba(45,141,237,1));
border: .1px outset rgb(122, 188, 255);
border-radius:4px;
}