QT
文章平均质量分 84
我在学习QT的一些记录
秃头的毛睿
爱好是力量,篮球和技术以及漂亮的姑娘;
梦想是做一名会编码的厨子。
展开
-
QT项目——猜数字小游戏
学了这么久的QT,决定使用QT写一个猜数字的小游戏来锻炼自己对QT应用。先使用一个stackedWidget来存放两个页面,一个页面是开始页面,另一个页面是游戏页面,不得不说这个容器真的很好使用,我一开始还准备使用字父窗口来实现主界面和游戏界面的切换。主窗口的头文件代码:#ifndef GUESSNUM_H#define GUESSNUM_H#include <QWidget>#include<QString>#include"youwin.h"#inclu原创 2020-07-11 17:13:45 · 2233 阅读 · 2 评论 -
QT学习(二十三)——使用QBuffer
QBuffer是内存文件1.一般给QBuffer中写入中文文件的时候,不可以直接打印,否则是二进制的形式,需要转化之后才会是中文。2.QBuffer的使用一定要先打开(并指定只读或者只写形式),使用完毕需要关闭。直接使用内存文件的write函数来进行对内存文件的写入: QByteArray a; QBuffer mem(&a); mem.open(QIODevice::WriteOnly); /*mem.write("爱在心头口难开"); mem.w原创 2020-07-07 08:00:15 · 1294 阅读 · 0 评论 -
QT学习(二十二)——用QTextStream操作文件
写文件——和QDataStream一样的方式写文件void Widget::writeData(){ QFile file; file.setFileName("../demo.txt"); bool isok=file.open(QIODevice::WriteOnly); if(isok==true) { QTextStream s(&file); //指定编码 s.setCodec("UTF-8")原创 2020-07-07 07:53:49 · 1292 阅读 · 0 评论 -
QT学习(二十一)——用QDataStream读写文件
写文件——写出来的文件并不是中文、UTF-8的形式的文本,所以在读取的时候需要进行向UTF-8的转化。void Widget::writeData(){ //创建文件对象 QFile file("../test.txt"); //打开文件,以只写的方式打开文件 bool isOK=file.open(QIODevice::WriteOnly); if(true==isOK) { //创建数据流.和file文件关联 //原创 2020-07-07 07:43:59 · 2204 阅读 · 0 评论 -
QT学习(二十)——用QFilinfo获取文件信息
使用QFilinfo获取文件的信息//获取文件信息QFileInfo info(path);qDebug()<<"文件名字:"<<info.fileName().toUtf8().data();qDebug()<<"文件后缀:"<<info.suffix();qDebug()<<"文件大小:"<<info.size();//以一个字节为单位qDebug()<<"文件创建时间:"<<原创 2020-07-07 07:37:46 · 147 阅读 · 0 评论 -
QT学习(十九)——用QFile读写文件
写文件:两种方法1.第一种使用QString获取编辑区的内容之后直接用toUtf8()转化为QByteArray2.第二种使用QString获取编辑区的内容之后先转化成std::string,再转换成char*,不过最后的文件类型都是UTF-8类型但是最后都要记得要 file.close();来关闭文件!!void Widget::forWrite(){ QString path=QFileDialog::getSaveFileName(this,"保存文件","../","TX原创 2020-07-03 16:08:23 · 3375 阅读 · 1 评论 -
QT学习(十八)——不规则窗口
在窗口上贴图void IrrWid::paintEvent(QPaintEvent *){ QPainter p(this); p.drawPixmap(rect(),QPixmap(":/new/prefix1/C:/Users/13764/Pictures/Saved Pictures/timgBOZIAIW6.jpg"));}-----------------------------------去除窗口的边框:windowFlags函数是为了获取窗口原来的标记原创 2020-07-02 23:20:08 · 239 阅读 · 0 评论 -
QT学习(十七)——绘图设备
QPixmap和QBitmap的区别:QPixmap一般贴的是彩色的图片,而QBitmap一般贴的是黑白的图片第一排<-原背景图片背景透明第二排<-原背景图片背景白色第一列<-Pixmap贴图 第二列<-Bitmap贴图常用的一些绘图设备:Qpixmap:针对屏幕进行优化,和平台相关,不能对图片进行修改Qimage:和平台无关,可以对图片进行修改,可以在线程中绘图Qpicture:保存绘图的状态变成一...原创 2020-07-01 22:56:19 · 761 阅读 · 0 评论 -
QT学习(十六)——简单绘图与手动更新窗口
绘图函数paintEvent,如果在窗口内绘图,则必须在绘图函数中实现,在窗口需要重绘的时候(窗口状态改变)绘图函数自动调用.Qpainter p(this)是创建画家对象,this是需要绘图的设备也可以p->begin(this),但是要在绘图结束的时候加上p->end().p.drawxxx()是各种绘图工具1.记住要先画背景,在画其他的,否则会被背景覆盖2.再绘图函数中不要进行太过于复杂的数据处理,否则程序运行很慢创建画家对象QPaint...原创 2020-06-30 20:05:19 · 634 阅读 · 0 评论 -
QT学习(十五)——事件event函数与事件过滤器
event函数bool event::event(QEvent*e){ if(e->type()==QEvent::Timer) { //注意参数的不同,需要显式的强制转换 /*QTimerEvent*env=static_cast<QTimerEvent*>(e); timerEvent(env);*/ //像上面这样写就会继续调用定时器 //取消定时器原创 2020-06-28 22:52:53 · 314 阅读 · 0 评论 -
QT学习(十四)——事件的接收和忽略
在窗口上设置一个按钮,使用connect函数来关联信号与槽//处理按钮信号 connect(ui->pushButton,&mybu::clicked, [=]() { qDebug()<<"按钮被按下!"; } ); //在这里处理信号之后,才发现,鼠标点击的信息被mousePressEvent函数截断,所以不会有“按钮被按下”原创 2020-06-27 22:53:05 · 630 阅读 · 0 评论 -
QT学习(十三)——事件
事件就是处理来自鼠标键盘等的信号----------------------------------------------------派生标签.h文件#ifndef MYABEL_H#define MYABEL_H#include <QWidget>#include<QLabel>class myabel : public QLabel{ Q_OBJECTpublic: explicit myabel(QWidget *parent =原创 2020-06-26 22:57:34 · 217 阅读 · 0 评论 -
QT学习(十二)——样式表
//如果这样使用那么整个窗口的QLabel标签都是以下面的方式显示 this->setStyleSheet("QLabel{color:rgb(0,255,52);" "background-color:red;"//修改背景颜色 "}");简单的变换标签字体颜色QLabel*label=new QLabel(this); label->setText("Today i me.原创 2020-06-24 23:00:00 · 1019 阅读 · 0 评论 -
QT学习(十一)——布局与自定义控件
布局可以使用设计器获取多种布局!#include "smlz.h"#include<QSpinBox>//滑块头文件#include<QSlider>//滑条头文件#include<QHBoxLayout>smlz::smlz(QWidget *parent) : QWidget(parent){ QSpinBox*spin=new QSpinBox(this);//加减块 QSlider* slider=new QSlider(Qt::H原创 2020-06-24 22:53:21 · 391 阅读 · 0 评论 -
QT学习(十)——设计器的使用
如果要使用QT的设计器的话,那么在建立项目的时候必须勾选上 .ui文件这一项上面的钩子。ui可以很方便的设计一个窗口项目。下面举一个简单的例子:运行:如果想要通过代码修改设计器中给定的一些属性,那么需要这样的来调用接口 ui->setupUi(this);//通过ui对窗口的操作都建立在这一步的后面 ui->pushButton->setText("ui");运行:----------------------------------.原创 2020-06-24 22:47:56 · 1377 阅读 · 0 评论 -
QT学习(九)——对话框
任然需要以QMainWindows为基类文件项目为了方便理解,我把dialog.cpp文件的各个部分拆开解读。----------------------------------------------------------------------模态对话框模态对话框就是,当我打开模态对话框的时候,在我对模态对话框操作完成之前,我无法对他的主窗口进行操作,这里主要是使用exec()函数来进行消息循环,在循环结束之前,只能对当前窗口操作。 //模态对话框 connect(p1,原创 2020-06-19 17:00:16 · 179 阅读 · 0 评论 -
QT学习(八)——窗口的菜单,工具,核心控件和浮动窗口
想要窗口拥有菜单栏和工具栏等一类,那么就需要建立以QMainWindow为基类的文件项目。由于之前已经对QT项目中的各个文件有所解读,所以这次把Mywindows.cpp实现文件来拆开解读各个接口。-----------------------------------------------------------------添加菜单栏//菜单栏QMenuBar *mBar;mBar=menuBar();--------------------------------..原创 2020-06-18 22:52:01 · 437 阅读 · 0 评论 -
QT学习(七)——坐标系统与内存回收机制
坐标系统:1.对于主窗口,坐标系统相对于屏幕原点:相对于屏幕左上角x:往右递增y:往下递增2.对于子窗口,坐标系统相对于主窗口原点:相对于窗口空白区域左上角(不包括边框)Coord.cpp文件代码:#include "coord.h"#include<QPushButton>#include"mybutton.h"Coord::Coord(QWidget *parent) : QWidget(parent){ /* ..原创 2020-06-18 17:22:16 · 139 阅读 · 0 评论 -
QT学习(六)——Lamda表达式的使用
Lambda表达式:c++11新增特性,需要在项目文件中加入CONFIG+=C++11QT配合信号一起使用,很方便 QPushButton *lamda=new QPushButton(this);//如果在构造函数中想要设置一个按钮的话,使用指针和new是一个非常好的选择,因为new出来的空间不释放就一直存在 lamda->move(50,200); lamda->setText("Lamda表示式"); connect(lamda,&QPushBut原创 2020-06-17 16:34:43 · 498 阅读 · 0 评论 -
QT学习(五)——从子窗口传来多个信号(带参数的自定义信号)
同样是两个窗口,主窗口与副窗口,给副窗口自定义两个重载的信号,传给主窗口处理 void mySignals(); //信号可以重载 void mySignals(int,QString);由被关联的按钮发送消息,并送出两条消息给主窗口emit mySignals();emit mySignals(520,"I Love You!");主窗口中处理消息的两个槽函数 //处理子窗口发送的第一个信号 void resume(); //处理子窗口发送的第二个信号,记住信号的返原创 2020-06-16 15:19:01 · 1100 阅读 · 0 评论 -
QT学习(四)——主副窗口的信息传递
项目文件 .proQT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use# any Qt feature that has been marked deprecated (the exact warnings# depend on your co原创 2020-06-15 20:12:11 · 408 阅读 · 0 评论 -
QT学习(三)——信号与槽
如果需要在窗口类中实现按钮的错误操作:窗口类实现文件——widget.cpp#include "widget.h"#include<QPushButton>Widget::Widget(QWidget *parent) : QWidget(parent){ QPushButton b; b.setParent(this); b.setText(QString("关闭"));}Widget::~Widget(){}解释:此时的按钮类原创 2020-06-15 15:27:38 · 132 阅读 · 0 评论 -
QT学习(二)——QT入门窗口演示(空白文件)
.pro文件中的内容(说实话,不是很懂)QT+=widgetsSOURCES += \ mian.cppmain.cpp文件中的内容#include<QApplication>#include<QWidget>//窗口控件基类#include<QPushButton>//给窗口设置一个按钮int main(int argc,char ** argv){ QApplication app(argc,argv); QWidg原创 2020-06-13 21:53:28 · 190 阅读 · 0 评论 -
QT学习(一)——QT项目中的各个文件的注解
初学QT,使用QT Creator建立了一个基类窗口项目,一下文件是IDE自动生成项目文件注解(xxxxx.pro):#QT有很多基本模块,常用的为QT Widgets#QT Core和QT GUI是内部的基本模块#注释项目文件需要使用‘#’#模块#头文件按F1可以查询模块所在地#仅仅只包含头文件还不行,还需要加入相应模块#不是很懂QT += core gui#高于4版本,添加QT+=widgets,为了兼容QT4greaterThan(QT_MAJOR_VERSI原创 2020-06-13 21:42:15 · 1303 阅读 · 0 评论