Qt
丁老师的技术随笔
公众号:丁老师的技术随笔
展开
-
Qt linux下设置系统时间
想要能修改 ARM板上的系统时间,试了两种方法:1.采用系统命令。system() 尝试了很多命令,date -s "20090807 16:02:23" ;date -s 16:02:23 ;但板子上的日期就是设置不成功,采用date -s 16:02:23 可以将时间设置成功。于是不得不考虑别的方法。2.标准C库 首先感叹下,C库很强大呀! 而且我觉着C库的移植原创 2014-07-26 16:10:44 · 10835 阅读 · 2 评论 -
再谈Qt Focus事件
在我的前一篇文章中,我实现了QLineEdit获得焦点高亮显示与失去焦点恢复原样的操作,是通过重新继承该类,再重构该事件函数的方式。这篇文章紧跟那篇文章,这里要实现的功能也是一样的,而是通过另外不同的方式——事件过滤器(eventFilter)。Qt的事件模型中提供的事件过滤功能使得一个QObject对象可以监视另一个QObject对象中的事件,通过在一个QObject对象中安装事件过转载 2014-02-28 13:40:10 · 3148 阅读 · 0 评论 -
Qt 安装事件过滤器installEventFilter
Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。假设我们有一个CustomerInfoDialog控件,由一些QLineEdit控件组成。我们希望使用Space键得到下一个QLineEdit的输入焦点。一个最直接的方法是继承QLineEdit重写keyPressEvent()函数,当点击了Space键时,调用focu转载 2014-02-28 14:13:54 · 7264 阅读 · 1 评论 -
Qt控件函数的重写
重写QLineEdit的focusInEvent()和focusOutEvent()函数:源码如下:// MYLINEEDIT_H#ifndef MYLINEEDIT_H#define MYLINEEDIT_H#include class MyLineEdit : public QLineEdit{ Q_OBJECT public: MyLi原创 2014-02-28 13:20:07 · 8572 阅读 · 0 评论 -
QProcess学习
QProcessQt提供了一个QProcess类用于启动外部程序并与之通信. 启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start()函数即可. 例如: QObject *parent; QString program = "tar" QStringList arguments;转载 2014-02-26 20:06:06 · 3223 阅读 · 0 评论 -
Qt 汉字内码及区位码 提取
工具下载:http://download.csdn.net/detail/qustdjx/6809217源代码:void MainWindow::on_pushButton_clicked(){ QString text_str=ui->lineEdit->text(); if(text_str.length()>0) { const char *hanzi=qPri原创 2014-01-04 21:26:27 · 3134 阅读 · 0 评论 -
Qt写入txt文件
void MainWindow::on_pushButton_clicked(){ count++; QString runPath = QCoreApplication::applicationFilePath(); ui->label->setText(runPath); QDir *TEST = new QDir; bool exist = TES原创 2014-01-01 10:21:36 · 25122 阅读 · 1 评论 -
QSqlTableMode设置单张表的查询过滤条件与表中有一列 id自动增加
1.在表中有一列 id自动增加query.exec("create table Mark_temp (id int primary key auto_increment,Mark_ID varchar(20), Hum int,Hum_Value float,Temp int,Temp_Value float )");2.QSqlTableMode设置单张表原创 2013-05-03 21:05:33 · 2580 阅读 · 0 评论 -
Qt自定义按钮
#ifndef QmayaLabelButton_H_#define QmayaLabelButton_H_ 1#include "QLabelHint.h"#include class QmayaLabelButton : public QPushButton { Q_OBJECTpublic: QmayaLabelButton(QWidget转载 2013-03-05 19:24:00 · 2262 阅读 · 0 评论 -
Ubuntu 下Qt SDK的下载及安装
Qt SDK 低版本很难找到啊,ftp://ftp.informatik.hu-berlin.de/pub/Mirrors/ftp.troll.no/QT/qtsdk/qt-sdk-linux-x86-opensource-2010.05.1.binUbuntu 下的软件中心能装Qt creator 装不上Qt SDK ,怎么回事。我一般会选择 软件中心来 安装Qt creator 但原创 2013-04-20 09:27:04 · 7623 阅读 · 0 评论 -
错误: 聚合‘QDateTime time’类型不完全,无法被定义
错误: 聚合‘QDateTime time’类型不完全,无法被定义呵呵,头文件中忘了#include原创 2013-03-24 13:01:46 · 6612 阅读 · 0 评论 -
Qt setWindowFlags的使用
setWindowFlags(Qt::WindowCloseButtonHint);//哈哈窗口只有一个关闭按钮 使用方法:1: clientMainWindow::clientMainWindow(QWidget *parent) : QMainWindow(parent,Qt::WindowCloseButtonHint) { } 2 clien转载 2014-03-01 14:35:59 · 25392 阅读 · 0 评论 -
Qt之任务栏系统托盘图标
转自http://blog.csdn.net/qivan/article/details/7506306那么多功能,其实就一个类就搞定了,那就是QSystemTrayIcon 头文件(主要 1.声明菜单相关动作 2.声明系统托盘对象,以及相关托盘槽函数 3.关闭事件)#ifndef SYSTEMTRAYICON_H#define SYSTEMTRAYICON_H转载 2014-03-02 11:10:52 · 6364 阅读 · 0 评论 -
Qt linux文件同步写入
由于linux 系统机制问题,文件的创建和写入并不会直接写入硬盘,而是先写入缓存,当系统要关闭或需要时才写入硬盘。为防止突然掉电,应将缓存中的文件及时同步到硬盘上去。linux 下的sync 命令具有数据同步功能,我们可以在Qt程序中调用该命令。 附:sync 命令说明sync命令 linux同步数据命令格式: sync 用途:更新 i-node 表,并将缓冲文件写原创 2014-07-23 16:12:34 · 6377 阅读 · 0 评论 -
Qt 连接阿里云云主机上的MySQL
Qt 连接阿里云云主机上的MySQL,林原创 2014-05-25 16:35:30 · 4176 阅读 · 1 评论 -
QT实现不规则窗体和透明窗体
不规则窗体的实现有两种方式:一种是设置窗体的掩码图像;另一种是设置窗体背景透明,然后重写其绘图函数,将背景图绘制上去。 第一种方式:首先要准备两张图像,一张是要显示的图像,另一张是第一张图的掩码图像,黑色部分是你的窗体要显示的部分,如图: 具体实现的关键代码如下://IrregularForm1.hIrregularF转载 2014-07-18 09:25:31 · 2039 阅读 · 0 评论 -
MinGW 与MSVC的区别
Qt 中有两种方式编译,一种是原创 2014-05-24 16:23:38 · 36358 阅读 · 0 评论 -
QT界面(控件)相关设计的一些技巧总结
引言 最近在做数据库相关课程设计,所以就借此机会,先熟悉一下Qt的一些编程,同时了解一下C++的一些特性。其实更重要的是如何组织好相关模块的连接,如何规划项目,等等。所以就顺道把过程中遇到的问题和重要的一些控件的槽和信号介绍一下,以后忘了可以回来看。呵呵。 以下是我用到的一些重要的函数和代码:一、数据库的连接 1. QSqlDatabase TB = QSqlDatabase:转载 2014-05-24 11:27:26 · 2444 阅读 · 0 评论 -
使用Qt编写模块化插件式应用程序
动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来。比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会引起其它模块和主程序的重新编译,这点对于大系统的构建来说更加实用。另一方面,对于商业目的明显的企业,各模块可以独立设置访问权限,开发成员只能访问自己负责的模块,其它模块是不能也不给看到的,这样减少了整转载 2014-05-24 11:20:42 · 1610 阅读 · 0 评论 -
WIN7 下 Qt Creator 安装 QWT
QWT网址:http://qwt.sourceforge.net/qwtinstall.html1.先装SVN(因为QWT是用SVN进行版本控制的,只能用SVN下载)#sudo apt-get install svn2.下载QWT 源代码# svn co https://qwt.svn.sourceforge.net/svnroot/转载 2014-05-14 20:43:46 · 1227 阅读 · 0 评论 -
WIN7 下 Qt Creator 安装 QWT
LIBS += -L”D:\Qt\Desktop\Qt\4.8.0\mingw\lib” -lqwtINCLUDEPATH += D:\Qt\Desktop\Qt\4.8.0\mingw\include\Qwt转载 2014-05-14 19:52:51 · 1373 阅读 · 0 评论 -
Qt之自定义提示框二(右下角冒泡)
网页右下角上经常会出现一些提示性的信息,B/S有的东西,C/S当然也可以有,就像QQ的消息提示一样!实现一个类似的东西并不困难,只要想明白原理实现起来就很简单了! 实现原理:(1)显示:右下角缓慢弹出,定时器启动,逐渐改变位置即可,到达相应位置,停止计时器(2)驻留:定时器启动,让界面停留一定的时间,相应的时间过后停止定时器(3)退出:可以直接退出,转载 2014-03-03 19:36:38 · 5059 阅读 · 1 评论 -
Qt程序图标
网络上有很多这方面的介绍,这里只是MARK一下程序图标说明准备:1.图标文件:ICO图标文件(也许需要BMP/PNG转ICO工具)2.资源文件:RC文件,可手动创建一个空的RC文件注:这两个文件应与工程文件(*.PRO)放在同一路径下步骤:1.添加RC文件内容IDI_ICON1 ICON D转载 2014-03-02 09:50:35 · 1110 阅读 · 0 评论 -
Qt设置控件颜色
一般的属于QWidget子类的一些控件,可以直接使用样式表,例如label->setStyleSheet("color:white");Qpalette类相当于对话框或是控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。就像油漆匠的油漆计划,当要刷墙时,到计划中去查转载 2013-03-29 17:49:17 · 7379 阅读 · 0 评论 -
Qt的画图相关
QT的绘图系统为UI界面在各种设备(屏幕,打印机等等)上的输出,提供了统一的API接口。层次结构与Paint绘图输出直接相关的类大致为以下三个类及其子类QPainter QPaintDevice QPaintEngine 一个绘图操作的流程,基本上来说,就是对一个QPaintDevice直接或间接调用QPainter类,QPainter类内部调用QPaintEngine进行绘图原创 2013-03-01 19:55:05 · 7340 阅读 · 1 评论 -
QWidget,QMainWindow和QDialog的区别
转自http://blog.csdn.net/ikahn/article/details/6706284在创建Qt Gui Application时,总会让你选择在QWidget,QMainWindow和QDialog中选择一个Base Class。这三个类具体有什么区别呢?在Qt的手册和网上找了一些资料。先看官方的手册:QWidget Class Referenc转载 2012-09-27 12:23:10 · 9670 阅读 · 2 评论 -
QT中的随机函数的用法
首先是初始化:qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));接着就可以随机了:qrand()理论上返回0 到 RAND_MAX间的值。如果要返回0~n间的值,则为:qrand()%n;如果要返回a~b间的值,则为:a + qrand() % (b - a)这里介绍2种方法头文件都必须的,不多说了:转载 2012-09-10 09:13:24 · 1852 阅读 · 0 评论 -
将字符串写到指定文件
QFile file("E:/Qt/MyDemo/hhh/debug/hero.txt"); if(!file.open(QIODevice::Append | QIODevice::Text)) { qDebug("fail"); } QTextStream write(&file); write file.close();原创 2012-09-09 08:52:51 · 1070 阅读 · 0 评论 -
Qt把主窗口默认显示在屏幕的右侧靠边
void move ( int x, int y );void move ( const QPoint& );或者:setGeometry(x,y,width,heigth);这个可以控制显示的位置与 大小原创 2012-09-08 17:41:33 · 3677 阅读 · 1 评论 -
QT 多线程程序设计
QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的。线程类Qt 包含下面一些转载 2012-09-08 16:57:03 · 1090 阅读 · 0 评论 -
Ubuntu 下使用Qt连接MySQL数据库
我的环境是11.10+Qt creator1.在软件中心安装MYSQL。在软件中心直接输“MYSQL”关键字,然后安装 MYSQL客户端,MYSQL服务器端,MYSQL管理员。安MYSQL服务器端时,需要你输入一个密码,这个密码是让你设置root在MYSQL中的密码。如果直接在终端中输入 mysql,可能会提示ERROR 1045 (28000),这是因为这时候你是以自己用户名访问数据原创 2012-09-07 11:31:37 · 6153 阅读 · 0 评论 -
Qt QPainter QpinterPath QPixmap常用语句
类QPainter的常用语句:void PainterTest::paintEvent(QPaintEvent *){ QPainter painter(this); /*QPen pen; //画笔 pen.setColor(QColor(255,0,0)); QBrush brush(QColor(0,255,0,125)); //画刷 */原创 2012-09-05 16:33:40 · 5550 阅读 · 0 评论 -
Qt designer 中的布局与打破布局
如果想让控件能随着窗口的改变而适应窗口,那么你应该使用布局管理器。当使用了窗口管理器后你就不能自定义窗口里面的个别控件了。如果不得不改变控件,那么你就得“打破布局。布局管理器中有:1.水平布局2.垂直布局3.使用分裂器水平布局4.使用分裂器垂直布局5.在窗体布局中布局6.栅栏布局布局管理器的方法:使用ctrl选中多个控件,然后右键->布局,选中相应的布局原创 2012-09-04 15:53:08 · 17725 阅读 · 3 评论 -
Qt Qwt打点画图
源程序:FunCurve.h#ifndef FUNCURVE_H#define FUNCURVE_H#include #include #include #include namespace Ui {class FunCurve;}class FunCurve : public QMainWindow{ Q_OBJECT public:原创 2012-09-04 10:28:48 · 10178 阅读 · 5 评论 -
Qt qwt的example
#include #include #include #include #include #include #include #include //------------------------------------------------------------// curvdemo1//// This example program features s原创 2012-09-03 13:20:22 · 4787 阅读 · 0 评论 -
QwtSplineCurveFitter Class Reference
Detailed DescriptionA curve fitter using cubic splines.QwtSplineCurveFitter 是产生立体样条的曲线效果。(翻译不精确。。。反正和立体效果有关),感觉没什么大用。在示例程序中,curvdemo2中,好像不起什么作用,我认为它只是改变了将点连起来的线条样式。Auto Use原创 2012-09-10 11:04:43 · 1677 阅读 · 0 评论 -
Qt札记
1.关闭主窗口并退出程序是QApplication::exit()2.如果是QDialog,就accept()或reject()3.对于所有QWidget:close() 4.关于Qt程序设置背景透明 this->showMaximized(); this->setWindowOpacity(1); this->setWin原创 2012-09-27 10:18:41 · 977 阅读 · 0 评论 -
Qt的主线程与GUI
Qt只允许主线程使用界面类,因为界面类不是线程安全的,不可重入,在多个线程中使用可能会出现问题,因此Qt不建议主界面线程外的线程使用图形类和调用图形类接口。否则有可能报错:QT QPixmap:It is not safe to use Pixmaps outside the GUI thread原创 2013-03-01 12:27:11 · 2149 阅读 · 0 评论 -
setStyleSheet来设定窗口部件的样式(前景色,背景图片)
使用setStyleSheet来设置图形界面的外观:QT Style Sheets是一个很有利的工具,允许定制窗口的外观,此外还可以用子类QStyle来完成,他的语法很大比重来源于html的CSS,但是适用于窗口概括:Style Sheets是文字性的设定,对于整个应用程序可以使用QApplication::setStyleSheet() 或者对应一个窗口可以使用QWidget::转载 2013-03-01 19:46:23 · 5524 阅读 · 0 评论 -
QT中简单的延时办法
QEventLoop eventloop; QTimer::singleShot(time, &eventloop, SLOT(quit())); eventloop.exec();其中time代表延时时长。若QEventLoop是跨平台的,则该延时办法可跨平台实现。转载 2012-11-25 20:33:41 · 4013 阅读 · 0 评论