C++ 在没有QtDesigner的情况下在Qt中自定义QDockWidget

C++ 在没有QtDesigner的情况下在Qt中自定义QDockWidget,c++,qt,user-interface,customizing,qdockwidget,C++,Qt,User Interface,Customizing,Qdockwidget,(我为我糟糕的英语感到抱歉,但我会尽我最大的努力) 我目前尝试自定义几个QdockWidget的样式。我通过找到的唯一解决方案是在QtDesignerView中通过右键单击->set Stylesheet和类似于css的硬代码为对象设置样式表。 遗憾的是,我没有使用QtDesigner,而是在QtCreator的EditorView中编写图形代码 我现在的问题是——是否可以用普通编辑器定制比普通编辑器更好的小部件 widget.setObjectName("widget") 然后通过构造函数设

(我为我糟糕的英语感到抱歉,但我会尽我最大的努力)

我目前尝试自定义几个QdockWidget的样式。我通过找到的唯一解决方案是在QtDesignerView中通过右键单击->set Stylesheet和类似于css的硬代码为对象设置样式表。 遗憾的是,我没有使用QtDesigner,而是在QtCreator的EditorView中编写图形代码

我现在的问题是——是否可以用普通编辑器定制比普通编辑器更好的小部件

widget.setObjectName("widget")
然后通过构造函数设置样式表,如下所示:

this->setStyleSheet(“QDockWidget#widget{背景色:红色;…..)

这适用于简单的按钮,例如,但将十几行线组合成一条线并不是最好的解决方案,不是吗? 我很高兴得到一些提示,因为我在网上找不到太多关于这方面的信息,但我的cpp/Qt knownledge还不是最好的:(


谢谢

这可能不是最好的解决方案,但我可能会按照以下思路做一些事情:

  • 在.css文件中创建所需的样式表
  • 子类
    QDockWidget
  • 添加使用
    QFile
    加载/解析.css文件并设置样式等的方法
  • 然后我可能会想办法用
    QStyle
    和其他相关类做一些事情

您可以从程序中调用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));
例2:

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("");

事实上,在给出答案之前,我没有仔细阅读您的问题,但我想知道您为什么不能使用Designer。可能您可以在qtDesigner中生成样式表,然后查看表单源,最后复制并粘贴生成的样式表。您最好回到问题并回答试图帮助您的人。这是h阅读垃圾邮件。