嵌入式QT开发复习笔记
文章目录
- 一、简答题(30分)
- 1.1 Qt Designer设计一个对话框主要步骤
- 1.2 列举出信号和插槽有几种用法
- 1.3 Qt中窗口对象的父子关系如何指定及指定父对象有什么作用及好处
- 1.4 QT中的文件流(`QTextStream`)和数据流(`QDataStream`)的区别
- 二、填空题(10分)
- 2.1 Connect有几种连接方式
- 2.2 Qt中的常用标准对话框
- 2.3 Qt中常用的布局管理器
- 2.4 Qt标准输入对话框提供了4种数据类型的输入
- 2.5 Qt的`GraphicsView`框架结构主要包含了三个主要的类,分别是
- 三、判断选择题(30分)
- 四、编程题(30分)
- 4.1 button实现
- 4.2 对话框实现
- 4.3 编写一个字符串处理的类
- 4.4 滑动组件(slider)和旋转框(spinbox)
- 4.5 QT文件操作
一、简答题(30分)
1.1 Qt Designer设计一个对话框主要步骤
- ①创建窗体并在窗体中放置各种控件
- ②对窗体进行布局管理
- ③设置各空间的标签顺序
- ④创建信号和槽
- ⑤连接信号和槽
1.2 列举出信号和插槽有几种用法
一个信号可以连接多个槽:
connect(slider,SIGNAL(valuechanged(int)),spinBox,SLOT(setValue(int)))
多个信号连接同一个槽
connect(lcd,SIGNAL(overflow(int))this,SLOT(handlMathError(int)))
一个信号可以与另外一个信号相连接
connect(lineEdit,SIGNAL(textchanged(constQString&)),this,SLOT(updateRecord(constQString&)))
连接可以被移除
disconnect(lcd,SIGNAL(overflow(int))this,SLOT(handlMathError(int)))
1.3 Qt中窗口对象的父子关系如何指定及指定父对象有什么作用及好处
父子关系:
- 一般通过构造函数中的
QWidget*parent
参数指定窗口的父子关系
重要关系:
- 父对象
show
的时候会递归调用其所有子对象,让它们都显示出来。 - 父对象被销毁时会递归销毁其所有的子对象,让内存管理更加简单。
1.4 QT中的文件流(QTextStream
)和数据流(QDataStream
)的区别
文件流 (
QTextStream
)。操作轻量级数据(int
,double
,QString
)数据写入文本件中以后以文本的方式呈现。数据流 (
QDataStream
)。通过数据流可以操作各种数据类型,包括对象,存储到文件中数据为二进制。文件流,数据流都可以操作磁盘文件,也可以操作内存数据。通过流对象可以将对象打包到内存,进行数据的传输。
二、填空题(10分)
2.1 Connect有几种连接方式
- 直接连接
- 队列连接
- 自动连接
2.2 Qt中的常用标准对话框
FileDialog
ColorDialog
FontDialog
2.3 Qt中常用的布局管理器
QHBoxLayout
QVBoxLayout
QGridLayout
2.4 Qt标准输入对话框提供了4种数据类型的输入
int
类型的数据- 字符串
double
类型- 下拉列表框的条目
2.5 Qt的GraphicsView
框架结构主要包含了三个主要的类,分别是
QGraphicsScene
QGraphicsView
QGraphicsItem
三、判断选择题(30分)
使用
QTimer
对象开始计时的方法start()
设置
QLabel
对象显示文本内容的方法是show()
MVC的含义
MVC
模式中的M
代表Model
,V
代表View
、C
代表Controller
事件处理方法的有重载
QApplication::notify()
、QObject::event()
、Qt基类事件处理函数。窗口部件的父类包括
QWidget
、Qframe
、QScrollView
定时器精度依赖于系统及硬件设计
槽是普通成员函数
Qt
支持的图像格式是:PNG
、BMP
、XPM
Q_OBJECT
是宏定义,如果类里面用到了signal
,必须要声明这个宏FindDialog(QWidget*parent=0);
父参数为NULL
,说明没有父控件槽可以是虚函数,可以是公有的,保护的,也可是私有的。
show()
显示的对话框是无模式对话框。用exec()
显示的对话框是模式对话框当用户在窗口部件上放下一个对象时,就会调用
dropEvent()
内部对字符集的处理采用
UNICODE
标准QT增加的特性有效的对象通信
signal
和slot
、可查询和可设计的对象、事件及事件过滤器Qt可在多个平台的应用程序中完全应用模板
类的构造函数被自动调用执行的情况是在定义该类的对象时
new运算符的描述一般有:使用运算符new创建对象时,会调用类的构造函数;运算符
new
可以用来动态创建对象和对象数组;使用new
运算符创建的对象可以使用运算符delete删除实现Qt多线程方式有:继承
QThread
,实现多线程,继承QObject
,使用moveToThread
函数实现多线程,使用QThreadPool
,搭配QRunnable
QObject
对象树是一个静态的QObjectList
类对象object_trees
使用定时器,可以用
QObject
类的定时器Q_OBJECT
是宏定义,如果类里面用到了signal
,必须要声明这个宏Qt
支持GIF
格式图像,但无法实现存储Qt
中提供了QThread
线程类Qt
的风格类的基类是QStyle
类
四、编程题(30分)
4.1 button实现
效果:
实现代码:
main.cpp
#include <QApplication>
#include<QWidget>
#include<QPushButton>
#include<QtGui>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget *pWidget=new QWidget;QPushButton *button=new QPushButton("Quit", pWidget) ;QObject::connect(button, SIGNAL(clicked() ) , pWidget, SLOT(close() ) ) ;pWidget->show();return a.exec();
}
4.2 对话框实现
效果:
实现代码:
(假设UI的名字为gotocelldialog. Ui
)
main.cpp
include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog. h"
int main(int argc, char *argv[] )
{QApplication app(argc, argv) ;
Ui: : GotoCellDialog ui;
QDialog *dialog = new QDialog;
ui. setupUi(dialog) ;
dialog->show() ;
return app. exec() ;
}
4.3 编写一个字符串处理的类
需求:
编写一个字符串处理的类,MyString
,实现拷贝构造,‘=’
号重载等基本函数:
实现代码:
MyString.h
#include <iostream>
class MyString
{char *str;
public:MyString(char *s){str=new char [strlen(s)+1];strcpy(this->str,s);}MyString(const MyString &temp){str=new char[strlen(temp.str)+1];strcpy(str,temp.str);}~MyString(){delete str;}MyString & operator = (const MyString &temp){delete[] this->str;this->str=new char[strlen(temp.str)+1];if(this->str){strcpy(this->str,temp.str);}return *this;}
};
4.4 滑动组件(slider)和旋转框(spinbox)
需求:
实现滑动组件(slider
)和旋转框(spinbox
)的用法
效果:
代码:
main.cpp
#include<QApplication>
#include<QHBoxLayout>
#include<QSpinBox>
#include<QSlider>
#include<QtGui>
int main(int argc, char* argv[])
{QApplication app(argc, argv) ; //创建 app 的构造函数QWidget *pWidget= new QWidget; //new 一个 WidgetpWidget->setWindowTitle("enter your age") ; //设置 captionQSpinBox* spinbox = new QSpinBox; //new 一个 spinboxQSlider* slider = new QSlider(Qt:: Horizontal) ; //new 一个 sliderspinbox->setRange(0, 130) ; //设置范围, ->符号slider->setRange(0, 130) ;QObject:: connect(spinbox, SIGNAL(valueChanged(int) ) , slider, SLOT(setValue(int) ) ) ;QObject:: connect(slider, SIGNAL(valueChanged(int) ) , spinbox, SLOT(setValue(int) ) ) ;//信号和槽, (发送者, 信号, 接收者, 槽) . 第一个是 spinbox 发送给 slider 的//第二个是 slider 发送给 spinbox 的spinbox->setValue(23) ;//QHBoxLayout 是布局管理器, 即在水平方向上排列窗口部件QHBoxLayout* layout = new QHBoxLayout;layout->addWidget(spinbox) ;layout->addWidget(slider) ;pWidget->setLayout(layout) ;pWidget->show() ; //窗体显示return app. exec() ;
}
4.5 QT文件操作
效果:
mainwindow.cpp
:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QFileDialog>
#include <QDebug>
#include <QPushButton>
#include <QTextStream>
#include <QFileInfo>
#include <QDateTime>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,[=](){QString fileName = QFileDialog::getOpenFileName(this,tr("Open File"), "C:\\data");ui->label->setText(fileName);QFile file(fileName);file.open(QIODevice::ReadOnly);QByteArray array;while(!file.atEnd()){array += file.readLine();}ui->textEdit->setText(array);file.close();});
}MainWindow::~MainWindow()
{delete ui;
}
嵌入式QT开发复习笔记相关推荐
- Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分 ...
- Ubuntu下嵌入式Qt开发环境配置全攻略
本文以友善之臂的Mini6410嵌入式开发板为目标板,介绍ubuntu 12.04系统下,配置嵌入式Qt开发工具的过程.本文中介绍的工具.大部分步骤和脚本来自开发板附带资料光盘,但其默认配置环境为老旧 ...
- 嵌入式Qt开发环境搭建
嵌入式Qt开发环境搭建 系统基础环境 系统更新 sudo apt update sudo apt upgrade sudo apt autoremove 安装常用软件 # 安装vim sudo apt ...
- 嵌入式Qt开发中配置文件的尝试——TOML
嵌入式Qt开发中配置文件的尝试--TOML 1 起因 2 关于 QSetting 3 重新寻找方案 TOML 3.1 TOML 初体验 4 后话 1 起因 在大多数项目中,系统启动时都需要读取一份配置 ...
- 嵌入式Qt 开发一个视频播放器
上篇文章:嵌入式 Qt开发一个音乐播放器,使用Qt制作了一个音乐播放器,并在OK3568开发板上进行了运行测试,实际测试效果还不错. 本篇继续来实现一个Qt视频播放器软件,可以实现视频列表的显示与选择 ...
- Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113773009 长期持续带来更多项目与技术分 ...
- Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)
Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航 Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 前言 1.安装前的准备工作 2.安装交叉编译器 3.安装t ...
- Win10 Bash搭建嵌入式Qt开发平台
在Windows下利用mingw进行一些简单程序的编译还行,但是路径问题以及工具链的制作问题,总是会遇到麻烦,不如安装个虚拟机好用.曾试着在windows下编译下qt,后来坑太多果断放弃.自Win10 ...
- 基于arm的嵌入式QT开发(课程设计)
一. 项目要求 配置QT5.7基于x86及arm 等两种CPU架构的调试及开发环境: 移植arm编译后的QT5.7及屏幕校准工具tslib1.4至CORTEX ARM9实验平台: 开发基于QT5.7的 ...
最新文章
- SAP R/3 中会计凭证和物料凭证的对应关系
- python文件名带日期变量_Python实现文件按照日期命名的方法
- vs2015 QT5.6 兼容xp系统
- 约瑟夫问题(丢手帕问题)的java实现
- iKcamp团队制作|基于Koa2搭建Node.js实战(含视频)☞ 中间件用法
- Ubunt 服务教程集锦
- 一个超级简单的HTML模板框架源代码以及使用示例
- The Learnning of ROS Navigation Source Code---09-17
- python中大于多少小于怎么表示_Python While语句大于/小于符号
- upc 7834 送礼物
- 谷歌离线版下载及vs中添加谷歌浏览器(启动项目用谷歌浏览)
- 【年度总结 | 2022】想干什么就去干吧,少年
- Windows原版安装程序中diskpart使用
- App打造自定义的统计SDK
- Wondershare PDFelement for Mac v8.6.1 中文版 – 强大的PDF编辑工具
- 十分全的软件视频教程
- 进位计数制与数制转换
- Lab BGP 路由翻动(route flaps)
- 计算机应用 建模,第十八届“江泽涵杯”数学建模与计算机应用竞赛通知 - 团委学术科创部(XSKC)版 - 北大未名BBS...
- Spring5框架学习