Qt工作中经验总结
文章平均质量分 66
hudfang
这个作者很懒,什么都没留下…
展开
-
qss + delegate:QComboBox Item Height
THE MOST IMPORTANT IS TO SET THE DELEGATE,IF NOT, THE STYLE WILL TO WORKS.QStyledItemDelegate * itemDelegate = new QStyleItemDelegate();ui.combox->setItemDelegate(itemDelegate); QSS:ui.co...原创 2018-12-12 14:02:22 · 831 阅读 · 0 评论 -
启动界面的添加方法
#include "qsplashtest.h"#include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QPixmap pixmap( "D:/splash.jpg"); QSplashScreen *splash = new QSplashScreen原创 2015-09-18 18:00:59 · 458 阅读 · 0 评论 -
如何配置一个软件系统的总体样式(用qss文件)
1.首先,必须要有一个.qss文件,里面配置各种想要的控件样式(网上这样的现成的样式有好多)2.在main函数里面写如下代码:QFile file( "D:/welllog.qss"); if (file.open(QFile::ReadOnly)) { QString styleSheet = QLatin1String(file.readAll()); qApp->原创 2015-09-06 17:31:10 · 776 阅读 · 0 评论 -
在状态栏加进度条方式
在状态栏加进度条有两种形式:第一个用QStatus的函数addwidget加在状态栏的左侧,第二利用addPermanentWidget()加到状态栏的右侧。效果图:示例代码:qmainwindowqss::qmainwindowqss(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flag原创 2015-09-06 18:26:58 · 7116 阅读 · 0 评论 -
QFileDialog保存打开对话框有两种风格: 在Windows和MacOS X平台上提供本地的对话框风格和Qt自绘的对话框风格
工作中Qt经验总结原创 2014-12-17 18:50:53 · 2907 阅读 · 0 评论 -
vs+qt-vs-addin-1.1.11-opensource开发环境下:如何添加qdialog,并可以用设计师设计
我们现在的开发环境是VS2010+QT插件的方式,这个时候我想在某个工程里面添加一个dialog对话框,分三步走:第一步:用QT Designer 新建一个.ui文件,命名为geostralayerNameChoice.ui,然后完成编辑。第一:新增加一个dialog类,继承自 QDialog,比如class CGeoStraLayerNameChoiceDialog :publi原创 2015-05-18 14:42:30 · 2433 阅读 · 0 评论 -
qstring arg()使用
实验:QString i = "iTest"; // current file's number QString total = "totalTest"; // number of files to process QString fileName = "fileNameTest"; // current file's name QSt原创 2015-07-01 10:29:34 · 1622 阅读 · 0 评论 -
Qt获取当前时间
转载▼ Qt如何获取当前的系统时间呢?很简单,举出常用的几个例子! //获取系统现在的时间并设置显示格式 QDateTime current_date_time = QDateTime::currentDateTime(); QString current_date = current_date_time.toString("yyyy-MM-dd hh:m转载 2015-07-01 13:34:19 · 2379 阅读 · 0 评论 -
QTableView实现同时删除被选中的多行记录
一个很简单的功能,就是在QTableView中,有一些不连续的选区,实现将被选中的行删除。.首先是获得选区,可以用 QItemSelectionModel 和 QModelIndexList 实现: [cpp] view plaincopyQItemSelectionModel *selections = ui.tab转载 2015-06-10 16:54:58 · 5425 阅读 · 2 评论 -
QTableView的一些用法
(1)QTableView要获得其中的一项的内容,用如下代码:QModelIndex pModelIndex = m_pUI->tableView_users->model()->index(i,0);QString strName = pItemModel->data(pModelIndex).toString();(2)要使表格可以按住ctrl键和shift多选 不按住任何键的时原创 2015-09-23 15:29:40 · 2468 阅读 · 1 评论 -
QApplication详解
一、详细描述QApplication 类管理图形用户界面应用程序的控制流和主要设置。 可以说 QApplication是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QAppli转载 2016-10-31 09:02:33 · 37588 阅读 · 1 评论 -
Qt复习之小细节注意
1.对于所有定义了信号和槽的类,在类定义开始处的Q_OBJECT宏都是必需的。2.Qt由数个模块构成,每个模块都有自己的类库。最为重要的模块有QtCore、QtGui,QtNetWork、QtOpenGL、QtScript、QtSvg和QtXml。其中,在头文件中为构成QtCore和QtGui组成部分的所有类进行了定义,在程序中包含这个头文件,就能够使我们省去在每个类中分别包含的麻烦。3.原创 2016-10-31 13:44:03 · 540 阅读 · 0 评论 -
QLineEdit+icon+input text
QAction * pAction_Account = New QAction(ui.lineEdit_Account);pAction_Account->setIcon(QIcon(":/ICON/user.png"));ui.lineEdit_Account->addAction(pAction_Account,QLineEdit::LeadingPosition);u...原创 2018-12-12 11:33:22 · 958 阅读 · 0 评论 -
qmake &cmake &makefile differences
1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大4.所以出现了make工具make工具可以看...原创 2018-06-21 17:02:54 · 608 阅读 · 0 评论 -
两种消息模型: 点对点&&发布/订阅
点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。这里要注意: 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。 发布/订阅 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topi...原创 2018-06-05 16:46:16 · 2383 阅读 · 0 评论 -
qml用MenuStyle设置Menu的风格
Menu{id: powerMenustyle:MenuStyle{ itemDelegate.background: Rectangle{ height: 60 width: 40 color: "grey" } }itemDelegate.label: Text{...原创 2018-04-17 18:59:43 · 5038 阅读 · 3 评论 -
qml tableview红白间隔显示且行高可设置,并且cell 文字居中显示
import QtQuick 2.6import QtQuick.Window 2.2import QtQuick.Controls 1.4Item{ width: 800; height: 600 ListModel{ id:libraryModel ListElement{title: "aaa"; author: "原创 2017-10-13 12:08:39 · 4003 阅读 · 0 评论 -
Qt 5的学习--与Qt 4的几点区别
Qt5对Qt4的模块进行了重构,最明显的是对Qt Gui模块的修改,在Qt 5 中,Qt Gui不再包含有关界面的所有类。所有的图形界面程序需要的QApplication以及最重要的基类QWidget已经不在Qt Gui模块中,而是被重新组合到了一个新的模块Qt Widgets中。Qt 5的一个重大更改就是重新定义了Qt Gui模块,它不再是一个大而全的图形界面库,而是为各种图形用户界面组件提供一原创 2017-07-25 23:00:21 · 11720 阅读 · 0 评论 -
moc_***.cpp被手动从工程里移除以后发生的事情
1.环境:vs2013+qt插件手动从vs里面把moc文件移除了,再重新生成项目,会报一大堆link2001的错误,如下:***.obj:error LNK2001:无法解析的外部符号"public: virtual struct QMetaObject const* _thiscall....................出现bug原因如下:手动从vs里面移除moc文件以后,清理工原创 2017-07-25 22:26:44 · 2812 阅读 · 0 评论 -
qss范例
/************************************************************************** index list for customizing Qt or customized widgets using style sheets: =========================================原创 2016-12-21 23:24:41 · 2274 阅读 · 0 评论 -
qt多继承限制
qt不支持一个类派生自两个基类为qobject的类。原创 2015-05-26 17:29:05 · 5078 阅读 · 0 评论 -
QInputDialog还挺好用的呵呵
QStringList items;items //bool ok;QString item = QInputDialog::getItem(NULL, QObject::tr("QInputDialog::getItem()"),QObject::tr("Season:"), items, 0, false, &ok);//if (ok && !item.isEmpt原创 2015-05-15 11:28:37 · 4119 阅读 · 0 评论 -
用正则表达式对qlineedit的输入参数进行校验
用正则表达式对qlineedit的输入参数进行校验有两种方式:1.在构造函数中写如下代码:QString pattern("^[\\w ]{1,20}$");QRegExp rx(pattern);m_InputValidator = new QRegExpValidator(rx,this);m_pUI->ProjectName->setValidator(m_Input原创 2015-04-17 18:54:12 · 2084 阅读 · 0 评论 -
二分法在一个vector容器里面找某一个值,并求出该元素的下标
float COSGWellLog::GetPropertybyMD(float depth){std::vector vProperty = GetProperty();std::vector vMD = GetMD();std::vector::iterator it = std::lower_bound(m_vMD.begin(), m_vMD.end(), depth);原创 2014-11-17 09:29:48 · 2827 阅读 · 0 评论 -
做工程项目常见bug
1.框架插件式开发模式下,注意框架不要依赖插件 也就是不要在框架项目中加载插件的库也不要包含插件的头文件2.如果在运行时 报qglobal这种问题,就是在debug库下运行了release版本 或者是在release库下运行了debug版本3.如果编译时出现了QMetaData的错误,就是moc_文件出了问题4.如果一个框架加载其他动态库都成功 就是无法加载某个dll,很可能这个dl原创 2014-12-09 17:22:56 · 782 阅读 · 0 评论 -
QTextStream的使用 读写文件
注意,在用QTextStream读写文件时,必须先把文件打开,然后用完以后把文件关闭,如果不想文件存储在硬盘上,最后还要把文件删除,如下代码所示: QFile fJson(QString::fromStdString(strFilepath +strJsonFileName)); QFile fJsonStyle(QString::fromStdString(strFilepa原创 2014-12-19 11:35:04 · 7635 阅读 · 0 评论 -
QFile读写文件
1.读文件QFile file("/home/administrator/testdir/test.txt"); if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug()"Can't open the file!"} while(!file.atEnd()) { QByteArr原创 2014-12-19 13:21:58 · 16179 阅读 · 0 评论 -
元数据编译器moc介绍
Qt 不是使用的“标准的” C++ 语言,而是对其进行了一定程度的“扩展”。这里我们从Qt新增加的关键字就可以看出来:signals、slots 或者 emit。所以有人会觉得 Qt 的程序编译速度慢,这主要是因为在 Qt 将源代码交给标准 C++ 编译器,如 gcc 之前,需要事先将这些扩展的语法去除掉。完成这一操作的就是 moc。moc 全称是 Meta-Object Comp转载 2014-11-25 18:01:12 · 1415 阅读 · 0 评论 -
小功能--画一个矩形框里面贴图片
CSelectDlg::CSelectDlg(QWidget * parent,Qt::WFlags flags): QDialog(parent,flags){ m_pUI = new Ui::SelectDialog(); m_pUI->setupUi(this); m_GraphicScene = new QGraphicsScene(m_pUI->graphicsVie原创 2014-12-05 17:28:57 · 990 阅读 · 0 评论 -
QDialog对话框添加最大最小化按钮
1.从QDialog继承的对话框风格只有关闭和“?”两个按钮,没有最大最小化按钮,如下图所示:但是很多时候我们需要最大最小化按钮,这时候具体做法是:在对话框的构造函数中添加如下代码,效果如稀土所示 flags |=Qt::WindowMinimizeButtonHint;//添加最小化按钮 flags |=Qt::WindowMaximizeButtonHint;//添加最大化原创 2014-12-23 19:19:13 · 3971 阅读 · 0 评论 -
在单QTreeWidget如何准确的获得currentItem
QTreeWidgetItem * pCurrentItem = this->itemAt(event->pos() );event是单击、双击、右键响应函数的参数,如void CDataTree::contextMenuEvent ( QContextMenuEvent * event ) { QTreeWidgetItem * pCurrentItem = th原创 2014-12-23 19:28:23 · 4575 阅读 · 0 评论 -
QT之文件路径获取
QString str =QCoreApplication::applicationDirPath();QString strPathTmp =QCoreApplication::applicationDirPath() + QDir::separator();strImagePath =QDir::toNativeSeparators( strPathTmp );str:D:/20原创 2014-06-06 18:50:23 · 2715 阅读 · 0 评论 -
qobject_cast
函数原型:T qobject_cast ( QObject * object )本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0。在使用时有两个限制: 1# T类型必须继承自QObject。 2# 在声明时必须有Q_OBJECT宏。使用场景:当某一个Object em转载 2014-06-05 18:27:47 · 539 阅读 · 0 评论 -
vecor元素排序去重
sort(vec_sampleMD.begin(), vec_sampleMD.end());vec_sampleMD.erase(unique(vec_sampleMD.begin(), vec_sampleMD.end()), vec_sampleMD.end());原创 2014-11-13 15:53:16 · 533 阅读 · 0 评论 -
qlineedit校验输入合法性,弹出错误提示框
不解释题目,直接上效果图:做法与思路:1.错误图标和”名称不合法“这几个字都是显示在一个qlabel中的,但是这不是一个简单的label,必须继承自qlabel,并重写paintevent()函数,如下所示:void CWellLogLabel::paintEvent(QPaintEvent *pEvent){QPainter painter(this);Q原创 2015-04-17 17:20:42 · 3902 阅读 · 0 评论 -
获得qstring字符串的长度(字节长度和所占的像素宽度)
1.QString 用length()返回字符串的长度,即字节数, 在中英文字符都是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。想要取得英文长度为 1 中文长度为 2 的总长度,必须用toLocal8bit()。具体使用方法如下所示:QString s = "ab中文";int length = s.length(); //length = 4;原创 2015-04-17 17:07:43 · 46851 阅读 · 2 评论 -
qlabel贴图片
QImage * img = new QImage(::GetImagePath() + "error.png")m_pUI->label_project->setPixmap(QPixmap::fromImage(*img));必须先有qimage,然后通过qpixmap::fromimage(*img)得到pixmap,最后通过qlabel的setpixmap来设置qlabel显示图原创 2015-04-17 17:38:05 · 913 阅读 · 0 评论 -
QTreeWidget系列--QTreeWidgetItem可随意移动(拖拽),更换父亲节点
方法分如下两步:第一步,在datatree类(继承自qtreewidget)的构造函数中设置这棵树具有如下两种特征:setDefaultDropAction(Qt::MoveAction);setDragDropMode(QAbstractItemView::DragDrop);第二步,重写 startdrag()函数,在里面写上如下代码:void CDataTree::sta原创 2015-04-24 15:46:20 · 13959 阅读 · 0 评论 -
qtreewidget系列--qtreewidget节点重命名
1.效果图2.实现步骤:(1)节点名称可编辑这是qt 中item的一个属性,可以再新建节点的时候通过void QTreeWidgetItem::setFlags ( Qt::ItemFlags flags )设置该节点具有可编辑属性,具体做法如下:QTreeWidgetItem *pItem = new QTreeWidgetItem();pItem->原创 2015-04-15 16:13:18 · 10677 阅读 · 4 评论 -
command命令模式(行为模式)之我见
我觉得command命令模式的本质就是把触发者和接受者隔离开来,把一个函数能干的事情提升到类的级别 搞一个基类包含虚函数excute() 搞好多具体的接受者类C**command(),在具体接收类中去实现excute,和触发者invoke接触的是基类,利用多态性,真正干事儿的是具体的接受者类,这样隔离开来,无论加多少具体的接受者类 既有代码都不受影响 非常灵活很多lin原创 2015-04-15 17:17:28 · 885 阅读 · 0 评论