代码注释
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//调用应用程序类的有参构造的实例化对象
Widget w;//调用自定义的有参构造实例化的对象
w.show();//调用该类的父类里的成员函数show,显示窗口
return a.exec();//调用应用程序类实例化对象的成员函数exec,用于阻塞等待刷新事件
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)//自定义类的有参构造
: QWidget(parent)
, ui(new Ui::Widget)//类中成员指针的堆区空间初始化
{
ui->setupUi(this);//拖拽的内容的父组件设置为自定义类的指针,拖拽的内容显示在该类的窗口上
}
Widget::~Widget()
{
delete ui;//释放堆区空间的指针。
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
//ui_widget中的命名空间
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }//ui命名空间的声明
QT_END_NAMESPACE
class Widget : public QWidget//自定义类继承于父类QWidget
{
Q_OBJECT//信号与槽的宏,没有该宏,不能使用信号与槽
public:
Widget(QWidget *parent = nullptr);//带有默认函数的有参/无参构造,形参是指定父组件
~Widget();//析构函数,还是虚析构,说明父类的析构也是虚析构,回收指向子类对象的父类指针
//时同时回收子类的空间
private:
Ui::Widget *ui;//拖拽类的指针
};
#endif // WIDGET_H
登录框
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setWindowIcon(QIcon("G://24071//QQ"));
this->resize(QSize(360,480));
this->setWindowTitle("QQ");
QLabel *logo = new QLabel(this);
logo->resize(360,150);
logo->setText("QQ");
logo->setAlignment(Qt::AlignCenter);
logo->setStyleSheet("background-color:lightblue");
QLabel *lab1 = new QLabel(this);
lab1->resize(30,20);
lab1->setText("账号");
lab1->move(50,240);
QLabel *lab2 = new QLabel(this);
lab2->resize(lab1->size());
lab2->setText("密码");
lab2->move(lab1->x(),lab1->y()+lab1->height()+10);
QLineEdit *ledit1 = new QLineEdit(this);
ledit1->resize(200,20);
ledit1->setAlignment(Qt::AlignCenter);
ledit1->setPlaceholderText("输入QQ账号");
ledit1->move(lab1->x()+lab1->width()+10,lab1->y());
QLineEdit *ledit2 = new QLineEdit(this);
ledit2->resize(ledit1->size());
ledit2->setAlignment(Qt::AlignCenter);
ledit2->setPlaceholderText("输入QQ密码");
ledit2->move(ledit1->x(),ledit1->y()+ledit1->height()+10);
QPushButton *btn1 = new QPushButton(this);
btn1->setText("登录");
btn1->resize(50,30);
btn1->move(lab1->x()+(lab1->width()+ledit1->width())/2,lab1->y()+ledit1->y()/2);
btn1->setStyleSheet("color:white;background-color:lightblue;border-radious:10px;");
QPushButton *btn2 = new QPushButton(this);
btn2->setText("取消");
btn2->resize(50,30);
btn2->move(btn1->x()+btn1->width()+20,btn1->y());
btn2->setStyleSheet("color:white;background-color:lightblue;border-radious:10px;");
}
MainWindow::~MainWindow()
{
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QMainWindow>
#include <QPushButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
思维导图