您当前的位置: 首页 >  嵌入式

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

嵌入式QT开发复习笔记

MangataTS 发布时间:2022-05-21 16:35:08 ,浏览量:0

文章目录
    • 一、简答题(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代表ModelV代表ViewC代表Controller

  • 事件处理方法的有重载QApplication::notify()QObject::event()、Qt基类事件处理函数。

  • 窗口部件的父类包括 QWidgetQframeQScrollView

  • 定时器精度依赖于系统及硬件设计

  • 槽是普通成员函数

  • Qt支持的图像格式是:PNGBMPXPM

  • Q_OBJECT是宏定义,如果类里面用到了signal,必须要声明这个宏

  • FindDialog(QWidget*parent=0);父参数为NULL,说明没有父控件

  • 槽可以是虚函数,可以是公有的,保护的,也可是私有的。

  • show()显示的对话框是无模式对话框。用exec()显示的对话框是模式对话框

  • 当用户在窗口部件上放下一个对象时,就会调用dropEvent()

  • 内部对字符集的处理采用UNICODE标准

  • QT增加的特性有效的对象通信signalslot、可查询和可设计的对象、事件及事件过滤器

  • 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 
#include
#include
#include

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 
#include 
#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 
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
#include
#include
#include
#include
int main(int argc, char* argv[])
{
    QApplication app(argc, argv) ; //创建 app 的构造函数
    QWidget *pWidget= new QWidget; //new 一个 Widget
    pWidget->setWindowTitle("enter your age") ; //设置 caption
    QSpinBox* spinbox = new QSpinBox; //new 一个 spinbox
    QSlider* slider = new QSlider(Qt:: Horizontal) ; //new 一个 slider
    spinbox->setRange(0, 130) ; //设置范围, ->符号
    slider->setRange(0, 130) ;
    QObject:: connect(spinbox, SIGNAL(valueChanged(int) ) , slider, SLOT(se
    tValue(int) ) ) ;
    QObject:: connect(slider, SIGNAL(valueChanged(int) ) , spinbox, SLOT(se
    tValue(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 
#include 
#include 
#include 
#include 
#include 
#include 

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;
}

关注
打赏
1665836431
查看更多评论
立即登录/注册

微信扫码登录

0.0394s