Qt自定义控件17:可添加其他控件的空间容器

这篇博客介绍了如何在Qt中创建一个自定义控件,该控件作为容器,允许添加其他多个子控件,并且支持横向排列。内容包括控件的设计、界面展示及关键代码示例,展示了标题可变和无标题时的不同状态。
摘要由CSDN通过智能技术生成

可添加其他控件的控件容器

先上效果图:
在这里插入图片描述
界面描述:这里是五个此类控件,由于本人非美工,所以颜色喝效果没有调的很好,这其中的颜色都可以随意变化,可以随意拖动大小。标题框随着标题的长度变化,无标题是标题框不显示。控件中添加其他控件支持添加多个,暂时只写入了横向排列(若想纵向排列只需改变下源码,改成纵向排列即可)。

关键代码:

控件代码:

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
   
    ui->setupUi(this);
    layout = new QHBoxLayout();
}

Form::~Form()
{
   
    delete ui;
}
void Form::paintEvent(QPaintEvent *)
{
   

    m_width = this->width();
    m_height = this->height();

    lineWidth = m_height/10;
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
    painter.save();
    painter.setPen(Qt::NoPen);
    painter.setBrush(bgBrush);
    painter.drawRect(rect());
    painter.restore();

    drawLines(&painter);
    drawEc(&painter);
    drawTitle(&painter,QPoint(eWidth/2,eWidth/2));//画标题框和标题
    setLayoutPosition();//设置layout位置
}

void Form::drawTitle(QPainter* painter,QPoint point1)
{
   
    if(this->text == "")
    {
   
        return;
    }
    int rectWidth = text.length()*30;
    qDebug()<<"rectWidth:"<<rectWidth;
    int rectHeight = m_height/7;
    QPoint pointStart((m_width-rectWidth
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt添加自定义控件需要经过以下几个步骤: 1. 创建一个新的类来表示你的自定义控件。这个类需要继承自QWidget或其子类,例如QFrame、QLabel等,根据你的需求选择合适的基类。 ```cpp // MyCustomWidget.h #ifndef MYCUSTOMWIDGET_H #define MYCUSTOMWIDGET_H #include <QWidget> class MyCustomWidget : public QWidget { Q_OBJECT public: explicit MyCustomWidget(QWidget *parent = nullptr); signals: public slots: }; #endif // MYCUSTOMWIDGET_H ``` 2. 在类的实现文件中实现自定义控件的具体功能和样式。 ```cpp // MyCustomWidget.cpp #include "MyCustomWidget.h" MyCustomWidget::MyCustomWidget(QWidget *parent) : QWidget(parent) { // 设置控件的大小、位置等属性 // 添加控件、布局等 // 设置样式、信号槽等 } ``` 3. 在需要使用自定义控件的地方,包括Qt的设计器界面(.ui文件)或代码中,将自定义控件添加到父控件中。 - 在设计器界面中,可以使用QWidget控件作为容器,然后通过右键菜单选择"Promote to..."来将其替换为自定义控件。 - 在代码中,可以使用以下方式将自定义控件添加到父控件中: ```cpp // MainWindow.cpp #include "MainWindow.h" #include "MyCustomWidget.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { MyCustomWidget *customWidget = new MyCustomWidget(this); setCentralWidget(customWidget); } ``` 注意:在添加自定义控件之前,需要确保自定义控件的头文件和源文件已经包含到项目中,并在.pro文件中添加相应的源文件。例如: ```cpp # MyProject.pro # ... SOURCES += \ MyCustomWidget.cpp \ MainWindow.cpp HEADERS += \ MyCustomWidget.h ``` 这样,你就可以在Qt添加自定义控件了。记得根据你的需求,在自定义控件的类中添加具体的功能、样式和交互逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

制造垃圾代码的垃圾coder一个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值