Qt期末复习参考


非简答题

  1. Qt的风格类的基类是QStyle类。
  2. Qt中提供了QThread线程类。
  3. Qt支持GIF格式图像,但是无法实现存储
  4. Q_OBJECT是宏定义,如果类里面用到了signal,必须要声明这个宏
  5. 使用定时器,可以使用QObject类的定时器(QObject::startTimer())
  6. QObject对象树是一个静态的QObjectList类对象object_trees
  7. 实现Qt多线程的方式:
    (1):继承QThread,实现多线程(实现run函数)
    (2):继承QObject,使用moveToThread函数实现多线程
    (3):使用ThreadPool,搭配QRunnable
  8. new运算符的描述
    (1):new是一个关键字,不同于malloc函数
    (2):使用new创建对象时,会调用类的构造函数
    (3):new可以用来动态创建对象和对象数组
    (4):new和delete搭配使用,new创建的对象通过delete关键字释放。
  9. 类的构造函数被自动调用执行的情况发生在定义该类的对象时
  10. Qt可在多个平台应用程序中完全应用模板(跨平台
  11. Qt增加的特性有有效的对象通信signalslot可查询和可设计对象事件及事件过滤器
  12. Qt内部对字符集的处理采用UNICODE标准
  13. 当用户在窗口部件上放下一个对象时,就会调用dropeEvent()
  14. show()显示的对话框是无模式对话框。用exec()显示的对话框是模式对话框
  15. 槽可以是虚函数,可以是公有的保护的也可以是私有的
  16. FindDialog(QWidget *parent=0);父参数为NULL,说明没有父控件。
  17. Qt支持的图像格式有:PNG、BMP、XPM
  18. 槽是普通成员函数
  19. 定时器的精度依赖于系统及硬件设计
  20. 窗口部件的父类包括QWidget、QFrame、QScrollView
  21. 事件处理方法的有重载QApplication::notify()、QObject::event()、Qt基类事件处理函数
  22. MVC模式中M表示Model,V表示View,C表示Controller
  23. 设置QLabel对象显示文本内容的方法是show()
  24. 使用QTimer对象开始计时的方法是start()
  25. Qt的GraphicsView框架主要包含了三个主要类,分别是:QGraphicsScene、QGraphicesView、QGraphicesItem
  26. Qt标准输入对话框提供了4种数据类型的输入,int、字符串、double、下拉列表条目.
  27. Qt中常用的布局管理器有QHBoxLayout、QVBoxLayout和QGridLayout等水平布局,垂直布局,栅格布局
  28. Qt中常用的标准对话框有:FileDialog、ColorDialog、FontDialog
  29. connect有3种连接方式,直接,队列和自动连接

简答题

Qt Designer设计一个对话框主要步骤

  1. 创建窗体并添加需要的控件
  2. 对窗体进行布局管理
  3. 设置控件的标签顺序
  4. 创建信号与槽
  5. connect连接信号与槽

列举出信号和插槽的用法

  1. 一个信号连接多个槽(1对多)
    例:connect(silder,SIGNAL(valuechanged (int) ),spinBox, SLOT(setValue(int))
  2. 多个信号连接同一个槽(多对1)
    例:connect(lcd, SIGNAL(overflow (int) , this , SLOT(handMathError(int)))
  3. 一个信号连接另一个信号 (gay)
    例:connect(lineEdit , SIGNAL(textchanged(const QString&)), this, SLOT(updataRecord(const QString&)))
  4. 移除连接(disconnect)
    例:disconnect(lcd, SIGNAL( overflow (int)), this, SLOT(handMathError(int)))

Qt中窗口对象的父子关系如何指定及指定父对象有什么好处

指定方法:通过构造函数中的QWidget *parent参数进行指定。
重要作用
1.父对象show的时候会递归调用其所有子对象,让它们都显示出来
2.父对象被销毁时会递归调用销毁其所有子对象,让内存管理变得简单

Qt中文件流(QTextStream)与数据流(QDatastream)的区别

文件流(QtextStream)
操作轻量级数据(int,double,QString),写入的数据类型转换为可读的文本

数据流(QDataStream)
通过数据流可以操作各种数据类型,包括对象,写入的数据根据类型转换为二进制

文件流,数据流都可以操作磁盘文件,也可以操作内存数据。通过流对象可以将对象打包到内存,进行数据传输。

编程题

就按老师的来吧,我没真测试代码

1. GUI下的QWidget应用程序

在这里插入图片描述

#include <QtGui/QWidget>
#include <QPushButton>
#include <QtGui>
int main(int argc, char **argv)
{
	//必须用这个(同时满足GUI和QWidget)
	QApplication app(argc,argv);
	QWidget *widget=new QWidget;
	QPushButton *button=new QPushButton("Quit",widget);
	QObject::connect(button,SIGNAL(clicked()),widget,SLOT(close()));
	widget->show();
	return app.exec();
}

2. UI与Dialog操作

在这里插入图片描述

编写main文件,假设ui的名字为gotocelldialog.Ui

#include <QApplication>
#include <QDialog>
#include "ui_gotocelldialog.h"

int main(int argc,char **argv)
{
	QApplication app(argc,argv);
	//创建gotocelldialog的ui对象
	Ui::GotoCellDialog ui; 
	QDialog *dialog=new QDialog;
	ui.setupUi(dialog);
	dialog->show();
	return app.exec();
}

3.Qt实验二

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QTextCodec>
Widget::Widget(QWidget *parent)
	:QWidget(parent), ui(new Ui::Widget)
{
	connect(ui->File_btn, SIGNAL(clicked()),[=](){
		QString filepath =QFileDialog::getFileName(this ,"xxxx(default filepath)");
		ui->File_PathEdit->setText(filepath);
	
		QFile file(filepath);//打开文件
		file.open(QIODevice::ReadOnly);
		QByteArray array;
		while(!file.atEnd()){
			array+=file.readLine();
		}
		ui->textEdit->setText(array);
		file.close();
		//QFileinfo info(filepath) ,这个看自己吧,想写就写
	});
}

4. C++运算符重载,与拷贝构造函数

#include <iostream>
#include <string.h>
class MyString{
	char *str;
public:
	MyString(char *s){
		str=new char[strlen(s)+1];//注意区分sizeof与strlen
		strncpy(str,s,strlen(s));
	}
	MyString(const MyString &temp){
		str=new char[strlen(temp.str)+1]; //这里是&(引用)不要使用->
		strncpy(str,temp.str,strlen(temp.str));
	}
	MyString & operator =(const MyString &temp) //类比 A = B
	{
		delete this->str; //释放原来的空间
		this->str=new char[strlen(temp.str)+1];
		if(this->str){
			strncpy(this->str,temp.str,strlen(temp.str));
		}
		return *this; //返回该对象
	}
	~MyString(){
		delete str;
	}
}; //分号别忘了

5.信号与槽的使用

#include <QApplication>
#include <QHBoxLayout>
#include <QSpinBox>
#include <QSlider>
#include <QtGui>

int main(int argc,char **argv)
{
	QApplication app(argc,argv); //实例化app
	QWidget *widget=new QWidget;
	widget->setWindowTitle("Enter your age"); //设置窗口标题
	QSpinBox *spinbox=new QSpainBox;
	QSlider *slider=new QSlider(Qt::Horizontal);//水平放置
	ptr_spinbox->setRange(0,130);
	ptr_slider->setValue(32);//随便设置
	
	QObject::connect(ptr_spinbox,SIGNAL(valueChanged(int)), ptr_slider, SLOT(setValue(int)));
	QObject::connect(ptr_slider,SIGNAL(valueChanged(int)), ptr_spinbox, SLOT(setValue(int)));
	
	//进行水平布局
	QHBoxLayout* layout=new QHBoxLayout;
	layout->addWidget(spinbox);
	layout->addWidget(slider);
	widget->setLayout(layout);
	widget->show();
	return app.exec();
}

最好还是自己手写一下

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacky~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值