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
浙公网安备 33010602011771号