Настройка QDockWidget в Qt без QtDesigner - PullRequest
0 голосов
/ 04 августа 2011

(извините за мой плохой английский, но я сделаю все возможное)

В настоящее время я пытаюсь настроить стиль нескольких QDockWidgets. Единственное решение, которое я нашел с помощью Документация Qt -> Таблица стилей - это установка таблицы стилей для объекта в QtDesignerView с помощью правой кнопки мыши MouseClick -> set Stylesheet и своего рода жесткого кода (похожего на css). К сожалению, я не использую QtDesigner, но кодирую графические элементы в EditorView QtCreator.

Мой вопрос сейчас - возможно ли настроить виджеты обычным редактором лучше, чем

widget.setObjectName("widget")

и затем установка таблицы стилей с помощью конструктора следующим образом:

this->setStyleSheet("QDockWidget#widget{ background-color: red;........}");

это хорошо работает для коротких кнопок, например но объединение дюжины строк в виде строки не может быть лучшим решением, не так ли? Я был бы рад по поводу некоторых подсказок, потому что я не могу найти много об этом в сети, хотя мои знания cpp / Qt еще не самые лучшие: (

спасибо

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Возможно, это не лучшее решение, но я, вероятно, сделаю что-то вроде этого:

  • Создайте нужную таблицу стилей в файле .css
  • Подкласс QDockWidget
  • Добавьте методы, которые используют QFile для загрузки / разбора файла .css и установки стилей и т.д.*
0 голосов
/ 04 августа 2011

вы вызываете setStyleSheet из вашей программы.

пример:

pb->setStyleSheet(QApplication::translate("failoverCrit", "color: rgb(0, 0, 0);background-color: qlineargradient(spread:pad, x1:0.922018, y1:0.574, x2:0.385321, y2:0.159, stop:0 rgba(106, 106, 106, 255), stop:1 rgba(255, 255, 255, 255));", 0, QApplication::UnicodeUTF8));

example2:

ui.pbAssign->setStyleSheet(QString::fromUtf8("QPushButton {\n"
     "    border: 1px solid green;"
     "    border-radius: 3px;"
     "    padding: 4px;"
     "    background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:1, y2:0, stop:0 rgb(255,255,153), stop:0.668182 rgba(255, 255, 255, 255));"
     " }\n"
     ""));

для удаления стиля:

ui.pbAssign->setStyleSheet("");
...