![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
qt
talkingmute
这个作者很懒,什么都没留下…
展开
-
qt中QFileSystemModel和QStringListModel使用
/把树形视图的点击信号和表格视图的设置开始节点槽函数关联起来,达到在树形视图里每次点击,就在表格视图里显示对应的文件列表的目的。//再修改节点对象的值,传递上边的节点对象,要修改的值。...原创 2022-08-09 10:59:41 · 828 阅读 · 1 评论 -
qt中操作多个数据库时的注意事项
当我们有时需要操作多个数据库时,可能会这样写:db=QSqlDatabase::addDatabase("QSQLITE");...db=QSqlDatabase::addDatabase("QSQLITE");...这样运行会出现警告:QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.原创 2021-12-23 07:31:30 · 2652 阅读 · 0 评论 -
qt中添加mysql驱动插件的详细教程
在qt中如需要mysql数据库相关开发,需要先安装对应的驱动插件,否则会提示错误。这里具体讲解下如何安装mysql驱动插件:1-先下载myslq数据库的开发包,将里面lib目录下的这两个文件复制:粘贴到qt对应编译环境的bin目录下:2- 找到qt源码目录下mysql工程,打开它:修改里面的.pro文件如下:INCLUDEPATH +="E:\mysqlsrc\include"LIBS +="E:\mysqlsrc\lib\libmysql.lib"...原创 2021-12-22 22:43:45 · 1533 阅读 · 1 评论 -
qt5中基于QObject派生的线程创建应用方法
基于QObject派生的类创建多线程应用,是新学习qt朋友比较难掌握的,这里详细示范下如何操作:1-首先创建一个工作线程类:#include <QObject>//定义我们的工作线程,派生于QObjectclass workthread : public QObject{ Q_OBJECTpublic: explicit workthread(QObject *parent = nullptr); void workfun.原创 2021-12-21 20:51:40 · 320 阅读 · 0 评论 -
qt中利用正则表达式提取字符串中的浮点数和整数
当我们需要从一个字符串中提取数字时,可以用正则表达式来操作 QString str = "你的金额是: 0.22示范33^%zd卡兹克44是13.5x的5&ss"; QRegExp rx("\\d+\\.\\d+|(\\d+)");//定义正则表达式,前面是浮点数的规则,后面是整数的规则 QList<float> list; int pos = 0; while ((pos = rx.indexIn(str, pos))原创 2021-12-15 11:47:03 · 2990 阅读 · 0 评论 -
qt5中信号和槽连接,对于多种参数重载的处理
//因为QSpinBox的valueChanged信号有重载,为避免二义性,需要通过声明函数指针方式,来进行信号和槽的连接。 void (QSpinBox::*p)(int)=&QSpinBox::valueChanged;//函数指针p前要加类名作用域符号 connect(ui->spinBox,p,ui->horizontalSlider,&QSlider::setValue); connect(ui->horizontal...原创 2021-09-12 18:37:54 · 359 阅读 · 0 评论 -
qt中自动补全qcompleter使用
可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如:QLineEdit和QComboBox。当用户开始输入一个字符,QCompleter根据单词列表提示完成单词,它需要传递一个QStringList来构造QCompleter。 QStringList list; //list内容根据需求自行添加 list << "andy" << "6789" <<"baby"; QCompleter *complet原创 2021-09-09 22:23:46 · 1817 阅读 · 0 评论 -
qt中模态对话框和非模态对话框
模态对话框是会阻塞程序窗口的用户操作,必须要关闭后才可以进行后续的执行。而非模态对话框则不会阻塞用户操作,更灵活些,只是要注意设置一个关闭时自动释放内存的属性。 QDialog dlg; dlg.setWindowTitle("模态对话框"); dlg.resize(400,400); dlg.exec(); QDialog *pdlg=new QDialog; pdlg->setWindowTitle("非模态对话框");原创 2021-09-09 16:54:44 · 319 阅读 · 0 评论 -
qt中自定义信号和槽函数,信号重载
关于自定义信号和槽函数,是qt中最常用的。信号就相当于函数声明,没有返回值,可以带参数,需要signals开头。在connect连接时,最好使用qt5函数指针的方法,在访问类中的成员函数时前面要加对应类的作用域:类名::头文件中:signals: void mysig(); void mysig(int ,QString);private slots: void myslot1(); void myslot2(int ,QString);源原创 2021-09-08 21:56:21 · 769 阅读 · 0 评论 -
qt中事件分发器event和事件过滤器eventFilter使用
在qt中窗口部件接收到主程序的消息映射后,会进入到事件分发器模块,就是event虚函数接口,我们可以在该接口里进行特定事件的自定义处理。而当窗口部件需要过滤某一事件时,可以使用事件过滤器模块,就是eventFilter虚函数接口。对于事件分发器使用,需要先在指定控件头文件里声明,这里是一个自定义控件mylabel:protected: bool event(QEvent *e);再在源文件中实现:bool mylabel::event(QEvent *e){原创 2021-09-08 13:13:34 · 1710 阅读 · 0 评论 -
关于qt不规则窗体的应用设置
qt中不规则窗体应用,大多是没有边框、背景透明的,而且是可以随着鼠标按下移动的 //去掉窗口边框 this->setWindowFlag(Qt::FramelessWindowHint); //设置背景透明 this->setAttribute(Qt::WA_TranslucentBackground); //this->setGeometry(0,0,200,200);//设置窗口位置和大小对于不规则窗口的移动,需要重载鼠标原创 2021-08-21 11:10:59 · 244 阅读 · 0 评论 -
再谈qt中的绘图设备QPixmap,QImage,QPicture
qt中的绘图操作,是通过QPainter这个绘图对象类,在绘图设备上进行。绘图设备除了QWidget窗体外,还有QPixmap,QImage,QPicture这三种: //QPixmap主要是用于显示,只能在主界面UI线程中使用,和具体平台有关。 //而QImage主要是用于网络传输,支持多线程,和平台无关。 QPixmap pix(200,200);//定义一个QPixmap绘图设备,相当于一张画布 pix.fill(Qt::green);//指定填充颜色原创 2021-08-19 19:56:23 · 963 阅读 · 0 评论 -
qt中QPainter绘图操作介绍
QPainter是qt中绘图操作要用的绘图类,相当于一个画家。而绘图设备类QPainterDevice是相当于要绘画的画板,要在哪里绘画。画笔类QPen就是手里拿的画笔,有什么颜色、像素大小等。画刷类QBrush就是在一个封闭区域要画什么用的。头文件中,需要先声明paintEvent函数,这是绘图操作都必须要重载的虚函数:protected: void paintEvent(QPaintEvent *);void smallwidget::paintEvent(QPaintEve原创 2021-08-17 14:05:17 · 1715 阅读 · 0 评论 -
qt中有关定时器的两种实现方式
关于定时器,qt中有两种实现方式:1-基于QObject的startTimer接口,int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer),第一个参数是时间间隔(毫秒单位),该接口返回一个定时器的ID,后面关闭定时器或者定时器响应函数需要用到,记得保存该ID。在头文件中,需要重写timerEvent虚函数,当定时器事件发生时触发。protected: void timerEve原创 2021-08-16 21:35:55 · 444 阅读 · 0 评论 -
qt中sqlite数据库操作方法
在qt的sqlite数据库编程中,需要先在工程文件添加:QT += core gui sql在工程头文件中添加对应qtsql头文件,声明QSqlDatabase类对象,以及自定义的数据库初始化接口DbInit。#include <QtSql> QSqlDatabase db;bool DbInit();还有一些数据库操作的槽函数:private slots: void GetDbRecord(); void AddRec原创 2021-06-01 16:58:28 · 1135 阅读 · 0 评论 -
qt中带进度条的浏览器应用
在qt中对于浏览器应用,是使用的QWebEngineView类,通过load方法加载要浏览的url网址,并调用show来显示。而进度条是使用QProgressBar类,可以在任意控件通过addWidget方法显示出来。 //初始化进度条 progressbar=new QProgressBar; //把进度条添加到任务栏 ui->statusBar->addWidget(progressbar); //初始化WebEngineView浏原创 2021-05-19 18:25:37 · 278 阅读 · 0 评论 -
qt中进程间共享内存通讯
共享内存是进程间通讯最快捷的方法,qt中是有QSharedMemory类提供相关接口,配合着QBuffer缓存,QDataStream数据流这些类完成。QSharedMemory m_sm;m_sm.setKey(tr("mysharememory"));void MainWindow::on_btnSmWrite_clicked(){ QBuffer buffer; QDataStream datas; int size; if(m_sm.isAttac...原创 2021-04-13 21:54:34 · 387 阅读 · 0 评论 -
qt中QPixmap和QImage使用
QPixmap 针对绘图进行了优化,一般用于显示加载,和平台相关。而QImage则主要是为图像I/O传输、图片访问和像素修改等操作,和平台无关,可以用来优化UI响应时间。 QString openfilename=QFileDialog::getOpenFileName(this,tr("选择一个图片"),tr(""),tr("图片文件 (*.png *.jpg *.bmp)")); QImage image; if(!image.load(openfilename)).原创 2021-04-10 22:31:14 · 3104 阅读 · 0 评论 -
qt右键弹出菜单的一些实现方法
在qt中,关于右键弹出菜单,有几种实现方法:1-在窗口初始化时,修改指定控件的右键菜单策略,然后把右键点击信号和某个槽函数连接。 //设置btnNew按钮的右键菜单策略 ui->btnNew->setContextMenuPolicy(Qt::CustomContextMenu); //把btnNew按钮的右键点击信号和槽函数连接 connect(ui->btnNew,SIGNAL(customContextMenuRequested(Q原创 2021-04-08 21:42:56 · 4564 阅读 · 0 评论 -
qt中定时截图和剪贴板
qt中定时器的使用,是用的QTimer类。#include <QTimer>QTimer * m_timer;m_timer=new QTimer; //开始设置定时器响应槽函数 connect(m_timer,SIGNAL(timeout()),this,SLOT(slotTimerFun())); //启动定时器 m_timer->start(ui->spinBox->valu原创 2021-04-07 08:37:46 · 284 阅读 · 0 评论 -
QT的QListWidget之单击双击增删改详解
QListWidget是列表框控件,它是通过QListWidgetItem列表项来进行操作,我们的增删改操作也是围绕着它来开展。需要注意的是:删除操作,需要先断开QListWidget的信号和槽连接,否则会程序崩溃。void MainWindow::on_BtnAdd_clicked(){ if(ui->lineEditList->text().isEmpty()) { QMessageBox::information(this,tr("提示"),tr...原创 2021-04-01 17:52:17 · 8085 阅读 · 0 评论 -
qt文件属性的获取
qt中文件属性的获取主要使用qtfileinfo类,里面有几个方法可以调用:#include <QFileInfo>#include <QFileDialog>#include <QDir>#include <QDateTime> QString fileName=QFileDialog::getOpenFileName(this,"选择一个文件",QDir::homePath()); if(fileName.i原创 2021-03-25 22:12:40 · 760 阅读 · 0 评论 -
关于qt窗口的自定义关闭closeEvent
在qt的qtwidget中有一个虚函数virtual voidcloseEvent(QCloseEvent *event)它的作用就是响应关闭事件,当我们需要处理自己的关闭操作时,就可以重载该函数。在头文件加入:#include <QCloseEvent>类的定义中加入:protected: void closeEvent(QCloseEvent *event);在源文件实现该函数:void MainWindow::closeEvent(QCloseEv.原创 2021-03-24 17:00:46 · 1378 阅读 · 0 评论 -
qt程序打包所需DLL获取方法
1-先进入qt的命令行,在菜单里找到:2-再输入windeployqt D:\QT\打包程序\mynotepad.exe3-然后在该目录下就会把程序所需DLL拷贝过来:原创 2021-03-24 11:35:02 · 866 阅读 · 0 评论 -
qt新建自定义对话框(模态和非模态),堆上新建窗口注意要WA_DeleteOnClose
在qt中需要新建一个窗体时,可以用Qt设计师界面类,这个选项是不仅有窗体资源文件还有对应的类文件。对于对话框界面来说,是分模态和非模态两种,模态是完全阻塞状态,屏蔽了其他界面的响应。非模态是可以处理其他界面操作,就类似于网络中的同步和异步。具体代码如下: //自定义非模态对话框 sysset *pdlg=new sysset(this);//在堆上新建对话框窗口...原创 2020-02-11 12:16:05 · 916 阅读 · 0 评论 -
c++11的lambda表达式在qt信号槽connect使用
在c++11中引入了lambda表达式,就是匿名函数,可以直观看到函数执行过程,提高程序运行效率,因为不牵涉到函数参数的入栈调用。lambda函数的使用场景: 1、一些短小的函数,但只使用一次的。 2、配合STL泛型算法使用,比如sort(begin,end,function)这里function就可以用lambda函数。 3、回调函数。lambda函数被设计的目的...原创 2020-02-10 14:28:30 · 1408 阅读 · 0 评论 -
qt中foreach遍历和c++标准11的for
foreach在很多语言中就是循环遍历的作用,从一个可遍历的容器对象里依次提取一个元素。关于在qt中的使用如下: QStringList sl=str.split(",");//split分割以某字符串,到QStringList列表,这里是以,逗号分隔 sl<<tr("我的编号:%1,我的国籍:%2").arg("888").arg(tr("中国"));//&l...原创 2020-02-07 13:28:55 · 880 阅读 · 0 评论 -
qt跨平台实现原理
qt在不同操作系统下都实现有不同的底层类库,然后再暴露出一个公共的应用层接口,我们做的开发就是基于这个公共的应用层接口来完成。所谓的跨平台是指基于qt写的代码是跨平台,而不是编译出来的文件跨平台,同一份代码需要放到另一个平台上时,需要用另一个平台的类库重新编译。一个简要的qt框架跨平台实现原理图:...原创 2020-02-06 10:45:17 · 3383 阅读 · 0 评论