项目目录
└─test_day1
│ home.cpp
│ home.h
│ home.ui
│ home.ui.autosave
│ image.qrc
│ image2.rar
│ main.cpp
│ mainwindow.cpp
│ mainwindow.h
│ mainwindow.ui
│ test_day1.pro
│ test_day1.pro.user
│
└─image2
3.png
942.gif
apple1.png
apple2.png
apple3.png
home.ico
icon.ico
login.png
login2.png
login3.png
passwd.png
username.png
home.h
#ifndef HOME_H
#define HOME_H
#include <QMainWindow>
namespace Ui {
class Home;
}
class Home : public QMainWindow
{
Q_OBJECT
public:
explicit Home(QWidget *parent = 0);
~Home();
private:
Ui::Home *ui;
};
#endif // HOME_H
ui指针指向Ui空间的Home类
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "home.h"
#include <QMovie>
#include <QLabel>
#include <QPaintEvent>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void MovieInit();
protected:
void paintEvent(QPaintEvent *pe);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
Home *h;
QLabel *label;
QMovie *movie;
};
#endif // MAINWINDOW_H
home.cpp
#include "home.h"
#include "ui_home.h"
Home::Home(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Home)
{
ui->setupUi(this);
this->setWindowTitle("Home");
}
Home::~Home()
{
delete ui;
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("Login");
MovieInit();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::MovieInit()
{
label = new QLabel(this);
movie = new QMovie(":/image2/942.gif");
movie->start();
label->setMovie(movie);
label->setScaledContents(true);
label->resize(this->size());
label->lower();
}
void MainWindow::paintEvent(QPaintEvent *pe)
{
label->resize(this->size());
QWidget::paintEvent(pe);
}
void MainWindow::on_pushButton_clicked()
{
//QString username = ui->lineEdit->text();
QString username = ui->lineEditUsername->text();
QString passwd = ui->lineEditPassword->text();
if(username == "lsh" && passwd == "123")
{
qDebug() << "login success";
h = new Home;
h->show();
this->close();
}
else
{
qDebug() << "login fail";
}
qDebug() << username << passwd;
}
home.ui
mainwindow.ui
结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。
控件的sizePolicy说明控件在布局管理中的缩放方式。下面列举了一些最常用的值:
a. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。
b. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
c. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
d. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小
e. Expanding:控件可以自行增大或者缩小
注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)