1. 实现多窗口
2. 给按键增加图标
3. 动图展示
结果演示:
Mul_Con
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }
一、第一个窗口展示
ui界面布局:未运行前
运行后的界面展示
二、第二个窗口界面
ui界面设计
运行界面
第一个窗口实现代码
widget.cpp文件
#include "widget.h" #include "ui_widget.h" #include <QIcon> #include <QDebug> #include <QPixmap> #include <QMovie>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("KOKO");//构造第二个窗口w2 = new Dialog;//直接将窗口的show方法(本来就是一个槽函数),绑定到信号connect(w2, &Dialog::backWindow, this, &Widget::show);this->setFixedSize(this->size());//固定当前窗口大小//给button设置一个图标QIcon icon("/home/ubuntu/Pictures/avocado.jpg");//路径ui->pushButton->setIcon(icon);ui->pushButton->setIconSize(ui->pushButton->size() / 2);//设置快捷键ui->pushButton->setShortcut(QKeySequence(""));//控件ui->label->setText("hello");//设置lable显示图片QPixmap *map = new QPixmap("/home/ubuntu/Pictures/avocado.jpg");//图片大小qDebug()<<"图片大小=" << map->size();ui->label->setPixmap(*map);//设置图片缩放适应labelui->label->setScaledContents(true);//label适应图片// ui->label->resize(map->size());//ui->label->move(0,0);//this->resize(ui->label->size());//设置label在其他控件后面ui->label->lower();//放置在最后面的层ui->pushButton->raise();//放置在最前面的层//label显示一个数ui->label_2->setNum(125.125);//label显示动图GIFQMovie *movie = new QMovie("/home/ubuntu/Pictures/koko.gif");ui->label->setMovie(movie);//播放设置movie->start();//开始播放movie->setSpeed(100);//播放速度qDebug() << "move size=" << movie->scaledSize();//视频/图片适应labelui->label->setScaledContents(true); }Widget::~Widget() {delete ui; }void Widget::ShowThisWind() {this->show(); }void Widget::on_pushButton_clicked() {qDebug("点击");//按钮按下状态if(ui->pushButton->isChecked() == true){qDebug("按下");}else {qDebug("弹起");}//显示第二个窗口w2->show();//模态方式显示//w2->exec();//非模态显示this->hide(); }
widget.h文件
#ifndef WIDGET_H #define WIDGET_H #include "dialog.h" #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();public slots:void ShowThisWind();private:Ui::Widget *ui;Dialog *w2; }; #endif // WIDGET_H
第二个窗口代码实现
dialog.cpp
#include "dialog.h" #include "ui_dialog.h" #include <QMovie> #include <QDebug> Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui->setupUi(this);this->setWindowTitle("罗小黑");this->setFixedSize(this->size());//固定窗口大小//设置label在其他控件后面ui->label->lower();//放置在最后面的层ui->pushButton->raise();//放置在最前面的层//label显示动图GIFQMovie *movie = new QMovie("/home/ubuntu/Pictures/lxh.gif");ui->label->setMovie(movie);//播放设置movie->start();//开始播放movie->setSpeed(100);//播放速度qDebug() << "move size=" << movie->scaledSize();//视频/图片适应labelui->label->setScaledContents(true);}Dialog::~Dialog() {delete ui; }void Dialog::on_pushButton_clicked() {//关闭this->close();//关闭窗口 }void Dialog::on_pushButton_2_clicked() {this->hide();//返回上一个窗口emit backWindow(); }
dialog.h文件
#ifndef DIALOG_H #define DIALOG_H#include <QDialog>namespace Ui { class Dialog; }class Dialog : public QDialog {Q_OBJECTpublic:explicit Dialog(QWidget *parent = nullptr);~Dialog();signals:void backWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Dialog *ui; };#endif // DIALOG_H