第十七天学习记录:工作相关:Qt控件设置setEnabled(false)的问题。
前一天学习了汉诺塔的实现,又用Qt自己写了一遍。在UI主界面点击PushButton,将根据spinbox的数字作为层数运行汉诺塔函数。
为了严谨,在运行函数之前加了ui->pushButton->setEnabled(false);
函数运行之后运行ui->pushButton->setEnabled(true);
void MainWindow::on_pushButton_clicked()
{ui->pushButton->setEnabled(false);cyuyan();ui->pushButton->setEnabled(true);
}
但运行结果并不是想象的那样,在点击按钮后按钮变灰,运行完成后按钮恢复正常。
而是如下图这样:
如果在卡顿过程中连续点击,将会发生灾难性的后果。。setEnable(false)并没有达到保护的效果。
为了研究为何后面的程序反而先执行了,就在该事件后面加了qDebug()
void MainWindow::on_pushButton_clicked()
{a++;ui->pushButton->setEnabled(false);cyuyan();ui->pushButton->setEnabled(true);qDebug() << "Finish"+QString::number(a);
}
在n=1到5的时候,输出结果都是正常的:
但当n大于5时,就会概率性出现奇怪的事情:
Finish并不是最后输出,而是在程序运行中就输出了
不知道这是一个什么机制。这种情况只好用多线程解决了。
20230423编辑:
通过查找问题,发现造成该现象的原因大概率是Qt在调用C语言进行C++、C混合编程时,在应用程序输出因为Qt是采用的qDebug,C语言是采用的printf,因此造成了显示错位。
在通过debug单步调试过程中,或者单纯只用qDebug时,都是在函数执行完成之后再输出后面的语句。
此外,在点击按钮后控件无法立刻刷新
则是用qApp->processEvents();写在setEnable后面,耗时函数之前即可。
第十七天学习记录:工作相关:Qt控件设置setEnabled(false)的问题。相关推荐
- qt 控件设置相对位置_qt设置控件相对位置
QT关于控件的教程_计算机软件及应用_IT/计算机_专业资料.zl使用Linux... 此例程主要展示用代码方式创建控件并用 Layout 管理类对其进行布局; 例程来自 Qt5.2,如过是默认安装, ...
- Qt 控件设置透明和半透明方法汇总
遇到了好多次控件有需要设置为透明和半透明的情况,每次都是去网上搜一搜,看看别人怎么实现的,浪费了很多时间,故在这里进行一个总结,希望对自己有一个提升. 本文对透明的各种情况进行了分类: 整个窗口及窗口 ...
- Vue学习笔记:Element时间控件设置某一个日期禁止选择
Vue学习笔记:Element时间控件添加一段时间禁止选择 需求:时间控件,当天之前禁止选择,某一个日期的之前时间禁止选择 文档: 代码实现:在时间控件上添加 :picker-options=&quo ...
- qt 控件设置相对位置_qt 手动设置控件的位置
QT中的Layout用着很不错,但有时候你想指定控件绝对位置.用以下红色代码就可以了. chanel1 = new QPushButton(tr("通道1:")); chanel1 ...
- qt控件设置图标方法总结
1.窗口设置图标 this->setWindowIcon(QIcon(":/rabbit.ico")); 2.qtreewidget设置图标 QTreeWidgetItem* ...
- Twain的学习记录和基于Qt的相关开源项目详解
Twain学习记录和基于Qt的开源项目详解 twpp-qml 适用于 C++11 及更高版本的便携式.仅标头 TWAIN 框架. 原项目作者使用Qtwidget基于Twain静态传输一张图片 我基于h ...
- Qt学习之显示类的控件(QLabel、QTextBrowser、QGraphicsView、QCalendarWidget、QWebView、QProgressBar、QOpenGLWidget)
本文转自:<Qt编程指南> 作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 5.5 显示类的控件 本节显示类控件是指作为显示用途的控件,本 ...
- 2020.4.23工作记录————Regsvr32加载控件失败:“请确保该二进制存储在指定路径中。。。”
工作记录----Regsvr32加载控件失败: 之前的OCX控件今天我因为工作需要又重新写了个新的,跟之前不同的是这次的控件链接了第三方的动态库,但是在OCX控件生成完成后我使用管理员身份运行cmd对 ...
- opic4:Qt入门之常用qt控件认知之Button系列
opic4:Qt入门之常用qt控件认知之Button系列 2013-06-27 18:21:54 标签:QAbstractButton QPushButton QRadioButton 原创作品,允许 ...
最新文章
- 把整数转换成2的n次方的和数组
- linux 查看显卡信息
- 十大不变计算机网络安全法则
- Vue之旅-Vue环境搭建
- 转载: 快速理解Docker - 容器级虚拟化解决方案
- php订阅与推送,PHP用户关键词订阅推送文章功能
- c语言实验报告上理答案,C语言实验报告江西理工大学实验5
- Factory Method (工厂模式)
- Sql Server 2005 64位安装包
- 联想微型计算机4250怎么拆机,联想T430笔记本拆机增加内存条图解教程
- 云计算机运维是什么,云计算运维管理是什么?
- 图像处理算法工程师——必备技能
- 共模干扰与差模干扰(及其消除)
- 为什么写技术博客对新人如此重要
- K-means clustering using random matrix sparsification(ICML2018)
- 如何通过ua区分QQ内置浏览器与QQ浏览器
- 为什么要学习Java?|猿代码科技
- net start mysql 提示:发生系统错误 2。 系统找不到指定的文件。
- 2021.07.13 B站是这样崩的
- GitChat · 人工智能 | 如何零基础用 Keras 快速搭建实用深度学习模型
热门文章
- flex布局设置justify-content为space-between,最后一个元素无法右对齐
- ExtJS梦想之旅(八)--GridPanel和EditorGridPanel的使用
- java vector的排序_java 中vector 排序
- windows文件介绍
- Yii1.x 国际化三步走
- 微信小程序官方接口生成带参数二维码
- mysql基础笔记(一)
- 2021年12月电子学会青少年软件编程(图形化)等级考试试卷(二级)答案解析
- 2 snippets vue 修改配置_Vue - VSCode 基本配置 ESLine Prettier 代碼自動風格化
- oracle 11g下载 Oracle 10g下载 Oracle 9i下载