繁体   English   中英

如何创建自定义窗口小部件并在Qt Designer中使用它?

[英]How to create custom widget and use it in Qt Designer?

我非常需要创建我的自定义窗口小部件,并在QtDesigner中使用它(将QWidget提升为我的窗口小部件)。 我以前从未做过,也无法用Google搜索任何有用的信息。 我需要获取的小部件只是带有少量QLabel和QLineEdit对象的方形框。 目前,我有以下代码:

#include "customwidget01.h"
#include "qlabel.h"
#include "qlineedit.h"
#include "QGridLayout"
customWidget01::customWidget01(QWidget *parent) : QWidget(parent)
{
    QString textSheets = "QLabel,QLineEdit {width:60;height:20;max-width:60;max-height:20;;min-width:60;min-height:20;}";
    QString widgetSheet = "customWidget01 {width:200;height:200;max-width:200;max-height:200;;min-width:120;min-height:200;}";
    this->setStyleSheet(widgetSheet + textSheets);
    QLabel *label1= new QLabel(this);
    label1->setText("1st arg");
    QLabel *label2 = new QLabel(this);
    label2->setText("2nd arg");
    QLabel *label3= new QLabel(this);
    label3->setText("3rd arg");
    QLabel *label4= new QLabel(this);
    label4->setText("4th arg");
    QLineEdit *line1 = new QLineEdit(this);
    line1->setPlaceholderText("enter 1st arg");
    QLineEdit *line2 = new QLineEdit(this);
    line2->setPlaceholderText("enter 2nd arg");
    QLineEdit *line3 = new QLineEdit(this);
    line3->setPlaceholderText("enter 3rd arg");
    QLineEdit *line4 = new QLineEdit(this);
    line4->setPlaceholderText("enter 4th arg");
    QGridLayout *layout = new QGridLayout();
    this->setLayout(layout);
    layout->setVerticalSpacing(10);
    layout->setHorizontalSpacing(10);
    layout->addWidget(label1,0,0);
    layout->addWidget(label2,1,0);
    layout->addWidget(label3,2,0);
    layout->addWidget(label4,3,0);
    layout->addWidget(line1,0,1);
    layout->addWidget(line2,1,1);
    layout->addWidget(line3,2,1);
    layout->addWidget(line4,3,1);
    this->setVisible(true);
}

我的问题是:

  1. 无法在小部件本身周围绘制边框
  2. 垂直和水平间距不起作用

QtDesigner一直用于GUI-不太熟悉纯代码中的GUI创建。

让我帮您获得漂亮的界面,您需要学习CSS我将向您展示它的工作原理,这就是您现在拥有的

在此处输入图片说明

这意味着您没有正确编写CSS代码

QString textSheets = "QLabel,QLineEdit {width:60;height:20;max-width:60;max-height:20;;min-width:60;min-height:20;}";
QString widgetSheet = "customWidget01 {width:200;height:200;max-width:200;max-height:200;;min-width:120;min-height:200;}";
this->setStyleSheet(widgetSheet + textSheets);  // does not work

我将交换这些行

QString textSheets = "QLineEdit{ border-width: 2px; border-style: solid; border-color: red green black rgb(127,255,10); }"
                      "QLabel  { border-width: 2px; border-style: solid; border-color: green black rgb(10,255,180) rgb(180,10,158); }" ;

setStyleSheet(textSheets);

那就是结果

在此处输入图片说明

调整大小,您只需要这样做

//label1->setMinimumSize(150,50);
label1->setFixedSize(150,50);
//label1->setMaximumSize(150,50);
//label1->setMidLineWidth(150);

那就是结果

在此处输入图片说明

  1. 在设计模式下添加QWidget
  2. 右键单击它,然后从上下文菜单中选择“ Promote to... ”。
  3. 将您的QWidget派生类的名称( customWidget01 )写入Promoted class name
  4. 确保在Header file生成的文本正确。
  5. 单击添加。
  6. 选择它,然后单击升级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM