Qt学习
文章平均质量分 60
Lqsaber
励志成为一个优秀C++参天巨猿
展开
-
Qt实现推箱子小游戏
学习Qt有一个月了,想要实现一个推箱子的游戏来检验一下自己。今天先设计一下将要完成的具体表现,因为是第一次做,所以设计的稍微简单点,以后逐渐修改。首先要创建菜单栏,分为三个主菜单,第一个主菜单为开始游戏,第二个主菜单为选择关卡,第三个主菜单为关于,开始游戏主菜单原创 2015-08-05 16:52:38 · 13949 阅读 · 6 评论 -
Qt QTreeWidget 树形结构实现
Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。树形效果如下图所示:这是怎么实现的呢?还有点击节点时会有相应的事件响应。1. 树形结构实现QT GUI中有treeWidget部件,将该控件在Gui中布局好,假设其对象名为treeWidget。QTreeWidget类官方文档:http://qt转载 2015-08-24 19:01:54 · 5608 阅读 · 0 评论 -
在QListWidgetItem中添加控件
QListWidget *list=new QListWidget;QListWidgetItem *item=new QListWidgetItem(list,0); item->setSizeHint(QSize(100,100)); QWidget *w = new QWidget(list); QPushButton *pushButton=new QPushButton(原创 2015-07-24 09:49:55 · 13835 阅读 · 5 评论 -
Qt5 操作字符串
1.“+” 例:QString str1="Hello ";QString str2=str1+"World!";//str2="Hello World!"2.QString::append() 例:QString str1="Hello ";str1.append("World!");//str1="Hello World!"3.QString::sprintf(原创 2015-07-23 14:55:51 · 2597 阅读 · 0 评论 -
Qt容器类整理
Qt既提供了诸如QVector、QLinkedList和QList等的连续容器,也提供了诸如QMap和QHash等的关联容器。连续容器存储连续值,关联容器存储键值对。Qt还提供了在任意容器上执行相关操作的通用算法。例如,qSort()算法对一个连续容器进行排序,qBinaryFind()在经过排序的连续容器上执行一个二进制搜索。(1)连续容器 QVector是一种与数组相似的原创 2015-08-03 17:17:45 · 3471 阅读 · 0 评论 -
Qt归纳(三)
Qt提供的容器类的最大优点在于平台无关性和隐式共享特性11.1 Sequentail ContainersQVector array-like data structure(在尾部插入数据时效率很高,而在中间和头部插入数据时开销很大)。 QVector提供了[]运算符 QVector可以用 QVector中的基本类型及指针被初始化转载 2015-07-31 14:55:36 · 1436 阅读 · 0 评论 -
Qt之界面实现技巧
一、主界面1、窗口 最小化 最大化 关闭按钮、显示状态自定义 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::WindowCloseButtonHint); //只要关闭按钮 setWindowFlags(Qt::WindowFlags type) Qt::FrameWindowHi转载 2015-07-22 15:08:32 · 625 阅读 · 0 评论 -
Qt中的验证器
Qt中要使用验证器,头文件使用#includeQt提供了三种内置验证器类:QIntValidator,QDoubleValitor,QRegExpValidatorQIntValidator:确保一个字符串包含在一个有效的整数范围内例: QIntValidator *validator=new QIntValidator(0,100);QLineEdit *lineEdit原创 2015-07-22 09:35:36 · 975 阅读 · 0 评论 -
QtSQL SERVER连接数据库
void QInstallWidget::openDatabase(){ QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //连接SQL SERVER db.setDatabaseName(QString("DRIVER={SQL SERVER};"原创 2015-08-03 11:34:54 · 494 阅读 · 0 评论 -
Qt正则表达式的使用
QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一个或多个常量表达式.令一类为 转义字符,它代表一个特殊字符.一.元字符. 匹配任意单个字符.例如, 1.3 可能是1. 后面跟任意字符,再跟3^ 匹配字符串首. 例如, ^12可能是123,但不能是312$ 配字符串尾. 例如, 12$可以是312, 当不能是 123[]转载 2015-07-22 09:54:48 · 700 阅读 · 0 评论 -
Qt中在槽函数中获取QListWidget中的各个部件
QWidget* pwig = NULL; QPushButton* pbtn = NULL; QListWidgetItem* pwidgetItem = NULL; InstallModulesPresenter* pPresenter = NULL; QListWidget *list=NULL; QPoint pnt = QCursor::原创 2015-08-03 11:31:53 · 4504 阅读 · 2 评论 -
Qt中的二维图形(二)
要想在绘图设备上绘图,只需创建一个QPainter,再将指针传到该设备中,例如:void MyWidget::paintEvent(QPainter *event){ QPainter painter(this); ............}使用QPainter的draw...()函数,可以绘制各种各样的形状。一些重要函数如下图。绘制的效果主要取转载 2015-08-03 15:03:17 · 1232 阅读 · 0 评论 -
Qt 之程序启动画面
#include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QSplashScreen *splash=new QSplashScreen; splash->setPixmap(QPixmap("start.png")); /转载 2015-08-27 17:38:49 · 482 阅读 · 0 评论 -
Qt 设置窗体无边框
QPoint move_point; //移动的距离 bool mouse_press; //鼠标按下 void mousePressEvent(QMouseEvent *qevent); //鼠标按下事件原创 2015-08-24 10:38:19 · 1301 阅读 · 0 评论 -
Qt判断数据库是否已存在某表以及判断某表是否存在某列
QSqlQuery query(db); QString selectsql;selectsql ="select * from sys.tables where name='car_bayonet_info'" ;//是否已经存在表car_bayonet_info query.exec(selectsql); if(!query.next()) {原创 2015-11-02 15:17:22 · 12062 阅读 · 0 评论 -
Qt 多线程
Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex 提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock 提供了一个可以同时读操作的锁QReadLocker与QWriteLocker 是便利类,它自动对QRead转载 2015-10-15 09:01:21 · 361 阅读 · 0 评论 -
Qt线程的简单使用
#include #include "threaddialog.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); ThreadDialog *threaddialog = new ThreadDialog; threaddialog->exec(); return a.转载 2015-09-09 15:55:27 · 460 阅读 · 0 评论 -
QT 多线程程序设计
QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的。线程类Qt 包含下面一些转载 2015-10-15 08:59:50 · 320 阅读 · 0 评论 -
QT中layoutstretch属性配置,控件按比例扩大缩小
现在相对一个horizontalLayout中的连个QTextEdit控件按2:3的比例扩大,找了很多资料没有找到那个参数可以配置,后来去一个国外的网站去找,终于找到了配置方法。具体方法:把horizontalLayout中的layoutstretch属性设置为2,3即可,layoutstretch属性的意思是horizontalLayout里面的两个控件按2:3的宽度显示。同理如果h转载 2015-10-10 11:08:53 · 2565 阅读 · 0 评论 -
Qt使用qss
QApplication a(argc, argv); QFile qss("./1.qss"); qss.open(QFile::ReadOnly); a.setStyleSheet(qss.readAll()); qss.close();1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6.转载 2015-08-06 09:22:12 · 1337 阅读 · 0 评论 -
Qt之 自定义QMessageBox(提示框)
头文件的编写:#pragma once#include "qdialog.h"#include #include #include class MsgBox : public QDialog{ Q_OBJECTpublic: MsgBox(int style,QString text); ~MsgBox(void);p原创 2015-09-14 13:51:26 · 16751 阅读 · 4 评论 -
QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚。所以,今天就在这里总结一下! 以下为个人模拟Windows资源管理器的一个表单 一、设置表单样式 table_widget->setColumnCount(4); //设置列数 table_widget->horizontal转载 2015-08-17 17:21:09 · 1163 阅读 · 0 评论 -
Qt之日常积累
Qt获取QDataTimeEdit的值QDateTime datetimes; QDateTimeEdit *time = new QDateTimeEdit(QDateTime::currentDateTime()); datetimes = time->dateTime();读取QTextEdit的值QString content = ui.conten原创 2015-08-12 10:00:19 · 675 阅读 · 0 评论 -
Qt发布exe文件
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单--》Qt 5.4.0--》5.4--》MinGW 4.9 (32-bit)--》Q转载 2015-08-06 11:22:57 · 1372 阅读 · 1 评论 -
关于时间戳和QDateTime相互转换的有关问题
1.toTime_t()把2014年12月19日10:24:40这样的QDateTime的格式转变为1418955940这样的时间戳[cpp] view plaincopyQDateTime time = QDateTime::currentDateTime(); //获取当前时间 int timeT = time.toTime_t(); //将当前时间转为时转载 2015-08-19 17:22:35 · 2668 阅读 · 0 评论 -
Qt的二维图形
Qt的二维图形是基于QPainter类的。QPainter既可以绘制几何形状,也可以绘制像素映射,图像和文字。此外QPainter还支持一些高级特性,例如反走样(针对文字和图形边缘),像素混合,渐变填充和矢量路径。QPainter也支持线性变换,例如平移,旋转,错切和缩放。 QPainter可以画在“绘图设备上”,例如QWidget、QPixmap、QImage或者QSvgGene转载 2015-08-03 14:33:50 · 1233 阅读 · 0 评论 -
LoadLibrary失败
正常情况,在一个exe中LoadLibrary(DLL1)可以获得正常的结果; 但是,当我们需要load的DLL1如果调用了其它的DLL2, 那么我们就会得到一个结果:The program can't start because ****.dll is missing from you computer. Try reinstalling the program to fix thi转载 2015-07-22 15:28:17 · 773 阅读 · 0 评论 -
Qt归纳(一)
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。例如要使用QApplication类,则需要在程序中添加" #include " QApplication类用于管理应用程序范围内的资源。其构造函数需要main函数的argc和argv作为参数。 widget被创建时都是不可见的(always created hidden)。widget中可容纳转载 2015-07-31 14:52:14 · 408 阅读 · 0 评论 -
停靠窗口和工具栏
QTextEdit *textEdit=new QTextEdit(this); textEdit->setText("Main Widget"); textEdit->setAlignment(Qt::AlignCenter); setCentralWidget(textEdit); setWindowTitle("Main"); QTre原创 2015-07-31 11:30:05 · 550 阅读 · 0 评论 -
Qt中splitter的使用
QSplitter *splitter1=new QSplitter(Qt::Horizontal); QTreeWidget *treeWidget=new QTreeWidget; treeWidget->setColumnCount(1); QString Header="Folders"; treeWidget->setHeaderLabel(Hea原创 2015-07-30 17:10:17 · 3476 阅读 · 0 评论 -
Qt把double类型的时间转化为QDateTime类型
QDateTime *dt=new QDateTime;int day =dTime/1;int secs =(dTime-day)*24*60*60/1;int msecs =((dTime-day)*24*60*60-secs)*60;dt->setDate(QDate(1989,12,30));dt->setTime(QTime(0,0,0,0));*原创 2015-08-26 16:13:13 · 4968 阅读 · 1 评论 -
Qt获取组合键
CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送。 在QT4中,所有的事件都继承与QEvent这个类,以下是用QEvent来实现快捷键的功能。 首先所有QT类的基类QObject有一个成员函数installEventFilter,这个函数是用来将一个事件处转载 2015-07-31 11:54:27 · 539 阅读 · 0 评论 -
动态链接库
qt类库中QLibrary就是用于解决qt调用动态库.dll问题,假设有一动态库文件为dllName.dll,其中有一库函数为 int add(int x,int y);加载动态库及获得库函数函数指针代码如下:view plain#include ... typedef int (*AddFunc)(int x,int y);//定义函数指针类型 AddFunc s转载 2015-07-29 16:29:52 · 329 阅读 · 0 评论 -
Qt布局之QStackedLayout
QWidget *w=new QWidget; QHBoxLayout *mainLayout=new QHBoxLayout; QListWidget *listwidget=new QListWidget(w); listwidget->addItem(QStringLiteral("第一个界面")); listwidget->addItem(QStri原创 2015-07-30 10:09:38 · 936 阅读 · 0 评论 -
Qt之显示图片
QT显示图片的方法有很多大致为label上显示直接画出来容器显示 1---------------显示gif图片(label上显示)http://archive.cnblogs.com/a/2053701/ 在QT中要显示GIF图片,不能通过单单的添加部件来完成.还需要手动的编写程序.工具:QT Creator新建一个工程,我们先在d转载 2015-08-10 13:09:06 · 506 阅读 · 0 评论 -
Qt鼠标事件
1、QMouseEvent中的坐标QMouseEvent中保存了两个坐标,一个是全局坐标,当然另外一个是局部坐标。全局坐标(globalPos())即是桌面屏幕坐标(screencoordinates),这个跟windows下的调用getCursorPos函数得到的结果一致。局部坐标(pos())即是相对当前active widget的坐标,左上角坐标为(0, 0)。补充一个公转载 2015-07-27 16:59:45 · 486 阅读 · 0 评论 -
Qt的布局管理
Qt中最为重要的三种布局管理器是:QHBoxLayout,QVBoxLayout,QGridLayout.这三个类从QLayout派生出来。QHBoxLayout: 水平布局类QVBoxLayout: 使用垂直布局类QGridLayout : 使用网格布局类具体用法如下:Layout::Layout(QWidget *parent) : QMainWindow原创 2015-07-28 11:44:43 · 638 阅读 · 0 评论 -
Qt归纳(四)
18.1 Creaing Threads Qt中提供多线程的机制很简单:创建QThread的派生类,并重新实现其保护成员函数run()。 QThread::run(),被调用来开始线程的执行,在run()结束时线程终止。 QThread::terminate(),用来终止线程的执行,非阻塞操作,并不保证线程的立即终转载 2015-07-31 14:55:13 · 524 阅读 · 0 评论 -
如何调用dll文件中的函数
动态链接主要是利用LoadLibrary、GetProcAddress、FreeLibrary这三个api。LoadLibraryHINSTANCE LoadLibrary(LPCTSTR lpLibFileName);The LoadLibrary function maps the specified executable module into the address转载 2015-07-30 14:14:33 · 3339 阅读 · 0 评论 -
Qt updatesEnabled
bool updatesEnabled这个属性保存的是更新是否生效。如果更新失效,调用update()和repaint()是没有效果的。如果更新失效,来自窗口系统的绘制事件会被正常处理。setUpdatesEnabled()通常被用于在一小段事件内使更新失效,例如为了避免在大的变化期间发生屏幕闪烁。实例: setUpdatesEnabled( FALSE );转载 2015-07-22 15:00:44 · 3047 阅读 · 0 评论