Как установить геометрию элемента в CSS в QT5
Я использую QT5-создатель конструктора и я использую CSS для настройки QPushButtons в кадре. Я хочу установить геометрию кнопок с CSS, я попробовал это, но это не работает для меня
.col-1-row-2 { position: fixed; top: 500 px; left: 500 px; }
я заменил fixed
с absolute
а также relative
но ничего не изменилось. Как я могу установить или изменить геометрию по умолчанию для каждого элемента в своем классе CSS? а рамки геометрии?
я использую эту функцию, чтобы применить CSS к проекту
void MainWindow::loadCss()
{
int rows = 7, mrows = 4;
int btnWidth = width() / 5,
btnHeight = height() / (rows + 1);
QString css = "", temp = ".col-%1-row-%2 { top: %3 px; %4: %5 px; }";
for (int i = 1 ; i <= mrows ; ++i)
{
css += temp.arg(1).arg(i).arg((rows - mrows + i - 1) * btnHeight).arg("left").arg(40);
css += temp.arg(2).arg(i).arg((rows - mrows + i - 1) * btnHeight).arg("right").arg(40);
}
QFile file(":/css.qss");
file.open(QFile::ReadOnly);
qApp->setStyleSheet(QString::fromLatin1(file.readAll())
.replace("${fullWidth}", QString::number(width()))
.replace("${fullHeight}", QString::number(height()))
.replace("${btnHeight}", QString::number(btnHeight))
.replace("${btnWidth}", QString::number(btnWidth))
+ css
);
file.close();
}
QSS файл
* {
font-size: 40px;
/* qproperty-alignment: AlignCenter; */
background-color: none;
}
QFrame {
position: fixed;
top: 0;
left: 0;
min-width: ${fullWidth} px;
min-height: ${fullHeight} px;
max-width: ${fullWidth} px;
max-height: ${fullHeight} px;
}
QPushButton {
min-width: ${btnWidth} px;
min-height: ${btnHeight} px;
}
#MainWindow {
border-image: url(:/images/sky.jpg) 0 0 0 0 stretch stretch;
border-width: 0px;
}
QFrame css тоже не работает.
1 ответ
Это не поддерживается Используйте макеты или ручное позиционирование для этого.
Qt реализует автономное подмножество CSS. Если что-то не документировано как поддерживаемое, это не поддерживается. Ссылаясь на список поддерживаемых свойств: управление геометрией на основе CSS не поддерживается.
Если вы настаиваете на стилизации позиции с использованием CSS, возможно, будет 10-20 строк, чтобы добавить эту функциональность в исходный код Qt.
Я успешно использую синтаксис qproperty-
QPushButton#Key_0{
qproperty-geometry: rect(0 0 160 84);
}
QPushButton#Key_1{
qproperty-geometry: rect(160 0 160 84);
}
Как описано в документации Qt