qt creator自定义组件

 

qt creator中纯代码实现自定义组件

 

yearmonthweeklabel.h

#ifndef YEARMONTHWEEKLABEL_H
#define YEARMONTHWEEKLABEL_H

#include <QLabel>
#include <QWidget>

class YearMonthWeekLabel : public QLabel
{
    Q_OBJECT

public:
   YearMonthWeekLabel(QLabel *parent = nullptr);//无ui界面时,需要调用此构造方法才会出现显示效果
    //YearMonthWeekLabel(QString yearMonthWeekStr);
    ~YearMonthWeekLabel();

public slots:
    void test1();
   void test2();
private:
    QString yearMonthWeekStr;
    QLabel *lab;
protected:
    void paintEvent(QPaintEvent *event) override;
};

#endif // YEARMONTHWEEKLABEL_H

  

 

 

yearmonthweeklabel.cpp

#include "yearmonthweeklabel.h"

#include <QLabel>
#include <QPainter>
#include <QPicture>
#include <QPushButton>
#include <QTextItem>
#include <QVBoxLayout>
#include <QDebug>

YearMonthWeekLabel::YearMonthWeekLabel(QLabel *parent) :QLabel(parent)
{
    QVBoxLayout* mainLayout = new QVBoxLayout();//垂直排列
    QPushButton* button1=new QPushButton("阿三大苏打wqewq",this);
    button1->setStyleSheet("border:1;background:white");
    //button1->show();

    QLabel *ql=new QLabel(this);//需要添加父类对象,这里使用this,否则显示在顶级窗口中即桌面上
    ql->setText("2024年");
    ql->move(0,30);
    ql->show();

    QPushButton* button2=new QPushButton("测试操作数据哈哈",this);
    //button2->show();
    button2->move(0,70);
    button2->setStyleSheet("border:1;background:white");
    mainLayout->addWidget(button1);
    mainLayout->addWidget(ql);
    mainLayout->addWidget(button2);
      // connect(btnNext,&QPushButton::clicked,this,&Calendar::toNextMonth);
    connect(button1,&QPushButton::clicked,this,&YearMonthWeekLabel::test1);
    connect(button2,&QPushButton::clicked,this,&YearMonthWeekLabel::test2);
}





YearMonthWeekLabel::~YearMonthWeekLabel()
{
}

void YearMonthWeekLabel::test1()
{
     qDebug()<<"测试点击按钮1,哈哈";
}

void YearMonthWeekLabel::test2()
{
    qDebug()<<"测试数据,哈哈";
}

void YearMonthWeekLabel::paintEvent(QPaintEvent *event)
{
    qDebug()<<"重绘数据";
}


//YearMonthWeekLabel::YearMonthWeekLabel(QString yearMWStr):yearMonthWeekStr(yearMWStr)
//{
//    //this->yearMonthWeekStr=yearMonthWeekStr;
//}

  其他方式实现自定义组件,如.ui方式

参见:https://blog.csdn.net/weixin_44441135/article/details/132893418

posted on 2024-02-09 18:47  The羿  阅读(5)  评论(0)    收藏  举报

导航