
Qt
鹏?
这个作者很懒,什么都没留下…
展开
-
在布局中调整控件大小
有时布局中的控件的geometry无法调整,那么例如想设置宽度为50,直接设置最小宽度和最大宽度都为50即可原创 2021-12-24 16:17:43 · 2813 阅读 · 2 评论 -
QTableView使用时的注意事项
QTableView设置纵向表头不可见QTableView::verticalHeader()->setVisible(false);设置表格的高度QTableView::verticalHeader()->setDefaultSectionSize(18);QTableView::verticalHeader()->setMinimumSectionSize(15);注意setMinimumSectionSize是设置最小高度若最小高度为25,则setDefaultSec原创 2021-12-22 15:22:52 · 920 阅读 · 0 评论 -
QStandardItemModel作为表格模型时使用注意事项
自然需要继承MyItemModel::public QStandardItemModel一、 设置列数行数QStandardItemModel::setColumnCount(int columns);QStandardItemModel::setRowCount(int rows);二、设置第一行表头的显示QStandardItemModel::setHorizontalHeaderLabels(QStringList headList);其中调整列宽的一个方式是,可以利用空格做占位符原创 2021-12-22 15:00:19 · 3702 阅读 · 0 评论 -
后续去看=
属性动画状态机原创 2021-12-07 16:19:42 · 127 阅读 · 0 评论 -
FANUC 0iF界面布局分析
屏幕分辨率640x480下方按键宽度54 间隔2 上边框2 下边框3 左边框2 右边框3高度46 最下面留一个像素两侧小按键宽度22新的设计 按键宽度70x10 28x2边框的绘制需要制作成一个属性Property左边框宽度Property右边框宽度Property上边框宽度Property下边框宽度按下边框效果Func是否按下Func是何种按键 (1.画面按键2.画面按键表按键3.(操作)4.操作按键5.操作按键表按键)Func是否按下按键是否需要带有翻页功能(选中并多显示一个原创 2021-12-07 11:26:09 · 530 阅读 · 0 评论 -
Qt 点阵字库问题
字库主要是系统负责在Windows下windows的字库一般支持.ttf 和 .fon文件.fon是点阵文件类型fony字库可以绘制自己想要的字库并另存为.fon文件还可以导出为.bdf文件生成.fon文件后,点击.fon选择安装,就可以安装自己设计的字库了安装好的字库可以在Windows/Fonts文件夹下查看是否生成成功若是Qt运行在嵌入式系统,可以在lib/font文件夹中放入.bdf文件,这样可以调用自定义的字库.bdf还可以通过makeqpf转换为.qpf文件放到嵌入式系统中,原创 2021-12-06 14:14:00 · 810 阅读 · 0 评论 -
Qt 全局屏蔽代理
QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);原创 2021-11-16 13:53:44 · 864 阅读 · 0 评论 -
Qt 真正正确的简单的方式获取QTableView的viewPort当前显示的可见的第一行和最后一行
QTableView::verticalScrollBar()->value() 对应viewport当前显示的第一行行号QTableView::verticalScrollBar()->pageStep() 对应viewport当前显示的行数(实际的行数,比如只有三行,页面再长,结果也是3)原创 2021-11-09 16:03:12 · 2252 阅读 · 0 评论 -
Qt制作的PLC开发软件
原创 2021-11-08 17:50:17 · 2159 阅读 · 11 评论 -
Qt如何获取Widget是否显示,是否绘制,是否在顶层,是否被显示
QWidget::visibleRegion();返回实际绘制的区域,包括是否被遮挡。检查是否完全被遮挡,检查visibleRegion()->isNull();不要使用isVisible() enable actived focused等属性,没用的。。。。原创 2021-11-08 16:30:00 · 4181 阅读 · 2 评论 -
QModbusTcp 内存溢出怎么回事
QModbusTcp 内存溢出怎么回事?????注意在使用QModbusReply::finished()信号,连接槽函数时,不要在槽函数中qDebug(),否则会产生内存溢出。另外槽函数中可以对reply->deleteLater();推测产生的原因,finished()信号使用另一个线程发射的,此时在槽函数中使用qDebug()会产生问题,没有验证,仅推测。...原创 2021-11-08 15:31:58 · 935 阅读 · 7 评论 -
Qt 复杂分割窗怎么做?
复杂分割窗怎么做?1.先拖两个frame,作为分割窗的左右两半2.分别在fram中拖拽一些需要的控件3.选中fram,右键布局为HLayout4.ctrl键加鼠标左键同时选中两个frame,右键布局选中使用水平分裂器布局5.选中整体widget,右键布局,选中水平布局,将分裂器填充到整个widget注意:使用分裂器布局时,需要对象继承自widget,所以复杂的包含情形,需要先创建两个frame...原创 2021-11-08 15:24:41 · 351 阅读 · 0 评论 -
Qt MoveToThread的使用方法
QThread thread = new QThread();MyObject object = new MyObject();//MyObjec的基类不能是界面类(QWidget),基类需要是QObjectobject->moveToThread(thread);thread->start();connect(xxxxx,signal,object,slot);只有使用信号槽的方式时,slot运行在子线程thread中使用lamda表达式的connect时,在主线程运行,直接调用s原创 2021-11-02 11:31:47 · 469 阅读 · 0 评论 -
QT 如何使用设计师写一个Widget其内容可以随Widget大小变化而变化
1.使用代码实现:QGridLayout* layout = new QGridLayout();widget->setLayout(layout);2.使用设计师:在界面中添加一个元件1.在界面空白处右键点击,选择“布局”,选择栅格布局2.或者在找到设计师界面右侧的对象树的根节点,右键点击,同上3.点击空白处,选择整个界面,点击上方菜单的布局模式注意直接添加布局是不能全屏的...原创 2021-10-27 17:36:31 · 929 阅读 · 0 评论 -
QT ModbusTcp主站的使用 QModbusTcpClient
1.ModbusTcp主站的创建和连接1.创建QModbusTcpClient* modBusTcpClient = new QModbusTcpClient;2.设置参数1.设置从站地址以及端口号1.设置端口号 (ModbusTcp端口号默认为502)modBusTcpClient->setConnectionParameter(QModbusDevice::NetworkPortParameter,502);2.设置连接的从站地址(若是主从栈在同一电脑内部测试,则设置为本机ip 12原创 2021-10-27 11:48:53 · 4079 阅读 · 3 评论 -
自己写的PLC编程软件,和FANUC PMC功能基本保持一致
自己写的PLC编程软件,和FANUC PMC功能基本保持一致下载地址,免积分https://download.youkuaiyun.com/download/Finull1/31293254原创 2021-10-11 17:02:12 · 466 阅读 · 1 评论 -
Qt 字体选择
Qt 提供QFontDialog类用于选择字体的各种属性,功能很完善,注意不需要二次开发该功能原创 2021-09-13 11:01:20 · 499 阅读 · 0 评论 -
调整QDockWidget的边框宽窄
例如在QDockWidget中使用addWidget()添加QTreeView那么调整QDockWidget的边框使用QDockWidget::setContentMargins()注意1:不要在QDockWidget调用layout(),或者设置setLayout(),此接口不生效给QDockWidget添加内容只能使用addWidget()注意2:当我们给dockWidget中添加复杂元素时QWidget* widget = new QWidget();QVBoxLayout* layo原创 2021-09-08 13:54:30 · 2582 阅读 · 0 评论 -
QUndoCommand注意事项 QUndoCommand组的概率
QUndoCommand需要和QUndoStack配合使用派生QUndoCommand的redo undo函数派生时,构造函数处理初始化自己需要的成员变量时,千万不要忘了QCommand* parentMyUndoCommand可以在初始化时指定自己的父亲对象此时自定义的对象的析构完全交给父亲对象若几个MyUndoCommand需要同时撤销和还原时那么我们new 出来几个MyUndoCommand都需要指定同一个父亲对象这个父亲对象可以是一个默认的 auto commandGroup = n原创 2021-08-19 09:48:23 · 354 阅读 · 0 评论 -
Qt QPainter 不光滑 画圆不光滑 画线不光滑 怎么办 抗锯齿
最近使用QGraphicsItem做自定义绘图功能, 发现画圆画曲线边缘都很粗糙. 于是试试开启抗锯齿看看效果如何.重载的函数中QGraphicsItem::paint()中加入下面代码painter.setRenderHint(QPainter::Antialiasing,true);绘制的圆形的边缘很光滑...原创 2021-08-10 14:03:00 · 2768 阅读 · 0 评论 -
Qt C++ foreach怎么用 遍历容器中的元素 能否改变元素值 是否是浅拷贝
可以遍历容器的每个元素,格式如下 foreach (var, container) { }例如利用foreach遍历QVector中每个元素class MyStruct{public: int m_a = 0; int m_b = 0; QString m_str = "";};void main(){ QVector<MyStruct> test_vector(3); test_vector[0].m_a =原创 2020-06-28 15:51:00 · 1325 阅读 · 0 评论 -
Qt 将函数内容 定义 从头文件自动移动到cpp文件 源文件中 从cpp文件移动到头文件中 在cpp中自动添加定义
函数定义从头文件自动移动到cpp文件中先要在头文件有一个定义好的函数,然后在要移动的函数那一行右键后按下图操作函数定义从cpp文件自定移动到头文件同理自定在cpp中添加定义,先要在头文件中有个声明好的函数,右键按下图操作...原创 2020-06-28 14:51:24 · 2780 阅读 · 1 评论 -
Qt 如何关闭窗口时释放窗口对象
默认情况下点击“X“关闭窗口,并不会释放窗口对象,在构造函数调用下面函数setAttribute(Qt::WA_DeleteOnClose);此时,点击“X”,就会调用析构函数了原创 2020-06-28 13:36:08 · 1955 阅读 · 0 评论 -
QRect QRectF 的 adjust()及adjusted()
void adjust(dx1,dy1,dx2,dy2)的功能在于修改这个变量本身QRect adjusted(dx1,dy1,dx2,dy2)不修改变量本身,而是返回一个调整过后的QRectdx1,dy1调整矩形左上角点位置dx2,dy2调整矩形右下角点位置QRect rect1 = QRect(0,0,10,20);rect1.adjust(5,5,-1,-2);//rect1的区域(5,5,9,18)auto rect2 = rect1.adjusted(-2,-1,5,-3);//rec原创 2020-06-23 19:33:18 · 6340 阅读 · 1 评论 -
QTreeWigetItem初始化使用QStringList 和data()的关系
QTreeWidgetItem(QTreeWidget* parent, QStringList list,int type);其中QStringList可以包含多个字符串,第一个字符串作为Item显示的名字(也可以用data(0,0)访问到),第二个字符串可以通过data(1,0)访问到,第三个字符串可以通过data(2,0)访问到,一次类推...原创 2020-06-23 09:07:34 · 689 阅读 · 0 评论 -
Qt C++ map使用const初始化 QMap使用const初始化
QMap怎么使用const初始化有的时候,需要通过字符串去访问一些固定的参数“class A”----男生11人,女生10人,教室面积150平“class B”----男生11人,女生11人,教室面积155平当然可以使用枚举加数组的方式,但是就是想用map怎么办呢?如何在头文件中使用const QMapclass Para{public:Para(int boy,int girl,int area):m_boy(boy),m_girl(girl),m_area(area){}int m_原创 2020-06-22 10:00:09 · 6096 阅读 · 3 评论 -
设置QGraphicsView中QGraphicsScene的左上角为初始位置
可以通过设置QGraphicsView的滚动条位置来达到此效果注意必须在QGraphicsView绘制过一次才可以通过滚动条调整位置class MyGraphicsView : public QgraphicsView{protected: void paintEvent(QPaintEvent* event) { QGraphicsView::PaintEvent(event); if(flag){ this->horizontalScrollBar()-&g原创 2020-06-19 15:44:17 · 3462 阅读 · 1 评论 -
delete QMenu出错,deleteLater()是什么,delete和delete later有什么区别
在QGraphicsItem中直接new出QMenu,QMenu的父对象只能是QWidget,所以delete QGraphicsItem时就要在析构函数中将QMenu释放,此时使用delete会报错,因为QMenu中有子对象,QAction和QMenu等,使用menu.deleteLater(),释放其子对象及自身,否则会出错。...原创 2020-06-15 16:08:35 · 796 阅读 · 0 评论 -
Qt QGraphicsItem如何清除其他所有item的选中状态
item->scene()->clearSelection();原创 2020-06-09 16:57:16 · 2017 阅读 · 0 评论 -
QGraphicsItem中event()和sceneEvent()的关系
事件由scene传递给item先由item的event()处理,如果在event()中 return false,交由sceneEvent()处理如果return true则不交由sceneEvent()处理原创 2020-06-09 15:50:30 · 983 阅读 · 0 评论 -
Qt QGraphicsTextItem 为何无法直接通过重写mousePressEvent()或event()或sceneEvent()获取焦点
QGraphicsItem中事件的传递顺序和通常的事件传递顺序不同在QGraphics中例如mousePressEvent的传递顺序是view传递给scene在传递给item在scene中的mousePressEvent已经调用item->setFocus(),所以重写item中的event()并不能拦截焦点的设置,重写Scene中event()才可以...原创 2020-06-09 15:48:03 · 982 阅读 · 0 评论 -
Qt 如何区分左右Shift 左右ctrl alt......
之前说过从QKeyEvent取出的大键盘enter和小键盘的enter对应的是不同的使用QKeyEvent::key()大键盘Enter对应Qt::Key_Return小键盘Enter对应Qt::Key_Enter但是左右shift在key()中并没有区分左右Shift对应的都是Key_Shift我们可以通过调用quint32 QKeyEvent::nativeScanCode()通过qDebug()打印按键的按键值例如右shift对应的是54,左shift则对应另一个按键值...原创 2020-06-09 15:32:18 · 1882 阅读 · 0 评论 -
Qt 如果获取QGraphicsItem在屏幕上的位置,在QGraphicsItem中获取全局位置,转换为screenPos
首先了解几个QGraphicsItem的函数QGraphicsScene* QGraphicsItem::scene() 返回item所在的场景SceneQPointF QGraphicsItem::scenePos() 返回item在场景中的位置QGraphicsScene的函数QList<QGraphicsVeiw*> QGraphicsScene::view() 返回Scene所在的viewQGraphicsView的函数QPointF QGraphicsView::map原创 2020-06-09 15:13:54 · 5363 阅读 · 5 评论 -
Qt 常用的两种QRectF的指定方式
QRectF(qreal x, qreal y, qreal width, qreal height)QRectF(const QPointF &topLeft, const QPointF &bottomRight)原创 2020-06-03 17:07:22 · 2154 阅读 · 0 评论 -
Qt QGraphicsObject点击子图元,选中父图元 点击子项目 选中父项目
例如子项目是1,父项目是2,子项目的z值大于父项目。直接点击2,则2被选中;点击6,2的选中状态取消,6被选中。那么点击子项目1时,父项目的mousePressEvent并不执行,如果直接在子项目中调用父项目的setSelected(),虽然可以选中,但是点击3时,4被选中,此时2,4同时被选中,没有直接点击父元件时的效果。这时,可以在子项目中定义一个带有QGraphicsSceneMouseEvent *event的信号,父项目接收,且在槽函数中调用mousePressEvent(event)即.原创 2020-05-29 16:55:43 · 1641 阅读 · 5 评论 -
Qt QGraphicsTextItem 实现双击进入编辑状态
要实现这个功能并不是很简单,因为QGraphicsTextItem的mousePressEvent和mouseDoubleClickEvent和其他类并不是很一样,重载senceEvent(QEvent*)也不太好使,下面介绍要实现的功能和实现方法实现的功能如下文本属性利用document()设置,请见上一篇文章双击左键进入编辑状态,并选择当前的文字此时可以利用左键选择文本以及编辑操作,右键保留剪切复制等操作回车键离开焦点,离开焦点时,做编辑成功处理,发射信号给父对象以做其他处理鼠标右键触发的离原创 2020-05-28 15:28:24 · 3878 阅读 · 0 评论 -
Qt QGraphicsTextItem如何将字体设置到居中位置
派生一个QGraphicsTextItem类首先尽量不要重写boundingRect(),因为QGraphicsTextItem中点击生效的与否跟文本本身相关,直接修改document()的参数比较好,否则即使设置了boundingRect点击文本外的位置还是无效在构造函数中添加//设置文本宽度,也是点击生效的宽度//document()返回的是一个QTextdocument*应该是该类中用于存储文本的对象指针,//所以文本相关的设置直接设置document比较好document()->s原创 2020-05-28 13:13:30 · 2866 阅读 · 0 评论 -
Qt 静态 全局方式获取 获取按下的鼠标按键 FocusOutEvent::reason() Qt::MouseFocusReason获取按下的是哪个按键
在某些时候在没有相应的鼠标事件时也需要获取鼠标按键例如在处理失去焦点事件FocusOutEvent时reason()是MouseFocusReason,这时想知道是哪个鼠标按键触发的,就可以向下面这样做//包含头文件#include <QApplication>//调用QApplication::mouseButtons()即可获得按下的哪个按键qDebug()<<"which button"<<QApplication::mouseButtions();原创 2020-05-28 11:39:49 · 1507 阅读 · 0 评论 -
Qt 怎么利用QString::arg()格式化输出,仅说明int型指定长度和补全的字符
char para1 = 'X';ushort para2 = 15;uchar para3 = 7;//希望显示成X0015.7//%1对应第一个arg(),%2对应第二个arg...//其中第二个arg()中的参数分别是1.要显示的数字;2.指定宽度;3指定进制类型;4.指定不够长时在前面补什么字符,这里补的是0QString testStr = QString("%1%2.%3").arg(para1).arg(para2,4,10,QChar('0')).arg()qDebug()&l原创 2020-05-27 15:01:33 · 2961 阅读 · 0 评论 -
Qt 使用std::pair作为函数返回值
struct Address{char section = '/0'; int number = 0;};std::pair<bool, Address> translate(char section, int number){ std::pair<bool, Address> a; if(number>100){ a.first = false; }else{ a.first = true; a.second.section = section; a原创 2020-05-27 10:36:39 · 1347 阅读 · 0 评论