欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 嵌入式-QT学习-小练习

嵌入式-QT学习-小练习

2025/2/13 15:52:34 来源:https://blog.csdn.net/m0_74969398/article/details/142212364  浏览:    关键词:嵌入式-QT学习-小练习

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com