qt开发中遇到的问题整理

QT开发问题整理 1.dialog 背景透明问题? windowOpacity值在0-1之间,1全不透。 最开始用styleSheet使用样式去处理,怎么都不透明。 阅读详情

1.请问可以在Qthread里面 操作 ui控件吗? 
不可以。 文档原文: In GUI applications, the main thread is also called the GUI thread because it's the only thread that is allowed to perform GUI-related operations 
所以只能通过信号和槽机制进行传递


2.QT4增加了一个非常有用的类QSettings 
QSettings是qt4.0提供的一个读取配置文件的类,在windows平台,它提供了ini文件读些,注册表读写的功能。而且使用也非常简单。大家可以参照它的示例:$QTDIR\examples\tools\settingseditor

我就简单点随便介绍介绍它的使用吧
QSettings::Format有两种:
QSettings::NativeFormat在windows平台可以读写windows注册表.
QSettings::IniFormat可以读写ini格式的配置文件
在Unix/X11平台下这两个Format效果是一样的:(

1).读写注册表
//注意的就是路径名必须是"/"而不是"\\"等.否则不能读写,同时注意
//Format为QSettings::NativeFormat
QSettings *settings = new QSettings("HKEY_CURRENT_USER/", QSettings::NativeFormat);

//写HKEY_CURRENT_USER/regedit/test,设置test值为red
settings->setValue("regedit/test", "red");

//读 HKEY_CURRENT_USER/regedit/test,默认值是ddd
QString value = settings->value("regedit/test", "ddd").toString();

删除设置对应的是settings->remove( const QString & key )

2).读取ini配置文件
ini文件格式如下:
[Alpha]
Beta/Beta=1
Beta/Gamma=2
Beta/Delta=1111
Beta/Epsilon=5
Iota=7
Omicron=11

QSettings *settings = new QSettings(fileName, QSettings::IniFormat);

//写Beta/Beta
settings->setValue("Alpha/Beta/Beta", 68);

其他和读写注册表差不多,我就懒得写了
发觉QT4读写的这种配置,即可兼容windows下的ini文件,同时它的功能也比windows API所提供的功能强.



3.QTextEdit如何得到光标所在的行和列??

首先获取QTextEdit 的当前光标
const QTextCursor cursor = textEdit->textCursor();
然后
int ColNum = cursor.columnNumber();
int RowNum = cursor.blockCount();
这样就over了 


4.隐藏滚动条: 
一般有滚动条的控件都有setVerticalScrollBarPolicy和setHorizontalScrollBarPolicy函数, 
只要设置为Qt::ScrollBarAlwaysOff就可以隐藏滚动条了,默认是Qt::ScrollBarAsNeeded需要时才出现。 


5.用qt把数据写入Excel 中

用qt把数据写入Excel 中:
代码:
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
        "",
        tr("file ( *.CSV)"));
    if(fileName == "")
    {
        return;
    }
    QTextCodec *code;
    code = QTextCodec::codecForName("gb18030");

    std::string strbuffer = code->fromUnicode(fileName).data();
    FILE *fileWrite = fopen( strbuffer.c_str(),"w");
    QString strFemale = "Female Count";
    QString strMale = "Male Count";
    QString strPatientCount = "Patient Count";
    QString str ="\n";
    std::string strCountbuffer = code->fromUnicode(strFemale+","+strMale+","+strPatientCount+str+QString().setNum(femaleCount)+","+QString().setNum(maleCount)+","+QString().setNum(patientCount)).data();
    QFile file;
    file.open(fileWrite, QIODevice::WriteOnly);
    file.write(strCountbuffer.c_str(), qstrlen(strCountbuffer.c_str()));        
    file.close(); 


6.linux下写文件乱码: 
/* 往文本里写数据 */
    QFile file("backup_file.txt");
    if(file.open(QIODevice::ReadWrite))
    {
        QTextStream out(&file);
        //设置编码用的codec
        QTextCodec *codec = QTextCodec::codecForName("UTF-8");
        // 设置流的编码方式       
        out.setCodec(codec);
        for( int i=0; i < 30; i++)
        {
            out << QString::number(i, 10) << "姓名" << endl;
        }
    } 
解决方法:
        //设置编码用的codec
        //        QTextCodec *codec = QTextCodec::codecForName("UTF-8");
        // 设置流的编码方式       
        //        out.setCodec(codec);        

7.对话框去掉边框: 
QWidget::QWidget ( QWidget * parent = 0, Qt::WindowFlags f = 0 ) 我们主要是继承Qwidget类时设置WindowFlags ,设置成Qt::CustomizeWindowHint或Qt::FramelessWindowHint,也可以用函数setWindowFlags进行设置


8.设置控件透明度: 
setWindowOpacity可以设置控件透明度,0.0-1.0,0.0是完全透明,对于容器类控件,它的所有子部件也随之变透明


9.启动其他应用程序,比如打开浏览器,打开一个excel文件等: 
   openUrl函数可以打开不同类型的文件,程序,网址等,会启动系统默认打开工具进行打开, 
openUrl ( const QUrl & url ) ;而QUrl以网址的形式设置一个文件全路径,进行打开。 
如:QUrl url("http://www.example.com/List of holidays.xml"); 
    
    QUrl url; 
    url.setUrl("F:/test/abc.chm");


10. 不要在switch、while,for里使用qprocess: 
   qprocess是多进程处理的,可能持续时间长,也可能会出异常,所以不要使用。在其他地方使用时,最好在start之后进行等待一段时间,waitforfinish 
   

开始篇:后期会整理QT开发Android应用遇到的问题和自己的解决方案 开篇 阅读详情

相关推荐

基于Spring Boot 3 + Vue 3 + UniApp的全栈高校社团管理小程序设计与实现

requestMatchers("/api/auth/**", "/doc.html", "/webjars/**", "/v3/api-docs/**").permitAll() // 公开接口。<u-search placeholder="搜索活动" v-model="searchKeyword" @search="loadActivities" :showAction="false"></u-search>R.success("活动创建成功") : R.error("活动创建失败");

2201_76125393的博客 343

qt开发中遇到的问题整理

1.请问可以在Qthread里面 操作 ui控件吗? 不可以。 文档原文: In GUI applications, the main thread is also called the GUI thread because it's the only thread that is allowed to perform GUI-related operations 所以只能通过信号和槽...

weixin_34326558的博客 315

深度解析:Android开发工程师(嵌入式系统方向)职位 - 技术需求、面试准备与发展路径

本文深入分析了嵌入式Android开发工程师的岗位要求和技术内涵。该职位需要掌握C/C++、Linux系统编程、硬件接口等核心技术,能够进行Android系统底层定制开发,包括HAL层实现、Framework修改、性能优化等工作。文章详细解读了岗位职责,梳理了必备技术栈,提供了针对性的面试问题与参考答案,并探讨了职业发展路径。这类岗位要求开发者兼具软件工程能力和硬件基础知识,适合在智能电视、机顶盒、车载系统等嵌入式领域发展的技术人员。

郑伟强dev的专栏 110

linux下qt运行时缺少依赖库问题

linux下报缺库的问题

weixin_42614907的博客 1429

QT教程】QT6与C++17 QT与C++新特性

QT6与C++17的背景知识《QT6与C++17》书籍正文——QT6与C++17的背景知识QT6与C++17的背景知识概述1.1 QT6的背景QT是一个跨平台的C++图形用户界面应用程序框架,它被广泛应用于开发GUI应用程序,也可以用来开发非GUI程序,如控制台工具和服务器。QT被设计成能够在多种操作系统上运行,包括但不限于Windows、Mac OS X、Linux、iOS和Android。QT6是QT框架的第六个主要版本,于2020年发布。

QT性能优化QT原理源码QT界面美化 2862

记录下 QT Linux 静态编译遇到的坑

记录下 QT Linux 静态编译遇到的坑 - 貘吃馍的日志 - 网易博客http://qbaok.blog.163.com/blog/static/1012926520119219573294/记录下 QT Linux 静态编译遇到的坑    2011-10-21 21:57:32|  分类: Linux |  标签: |字号 大中小 订阅Qt下静态编译Qt,根据我的经验,如果按照Windows...

weixin_34268610的博客 646

linux qt程序崩溃_QT中使用google breakpad捕获程序崩溃异常

今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法一、google breakpad源码的下载和编译1、https://github.com/google/breakpad.git,源码地址,git clone xxx克隆即可2、cd breakpad3、./configure4、make5、make完这里会报错breakpad/src/third_party/lss/linux_sysc...

weixin_33700809的博客 855

Qt5开发及实例——第16章综合实例问题整理(一)

Qt5开发及实例——第16章综合实例问题整理(一) 由于工作需要,对《Qt5开发及实例》(第3版)进行了一定的学习。 但是,开发环境不是Qt5的Creater,而是VS2017+Qt5(以下称VQ)的综合开发环境,因此这里需要说明下。在使用VQ进行完成第16章的综合开发实例【汽车销售管理系统】时...

woguanshiyinye的博客 652

Qt5开发及实例——第16章综合实例问题整理(二)

Qt5开发及实例——第16章综合实例问题整理(二) 继续进行第二部分的整理。 7、第16.3.1小节PieView的构造函数参数声明与定义不同同时使用默认参数 在第16.3.1小节,类PieView的构造函数在.h头文件中的声明如下: explicit PieView(QWidget *parent...

woguanshiyinye的博客 524

qt的如何调整显示不为科学记数法_qt开发中遇到的问题整理八(整理

5.如何使通用对话框中文化答:对话框的中文化比如说,QColorDialog的与文字相关的部分,主要在qcolordialog.cpp文件中,我们可以从qcolordialog.cpp用 lupdate生成一个ts文件,然后用自定义这个ts文件的翻译,再用lrelease生成一个.qm文件,当然了,主程序就要改变要支持多国语言了,使用这个.qm文件就可以了。另外,还有一个更快的方法,在源代码解开后...

weixin_35807050的博客 1957

qt开发过程中遇到的问题整理

1.怎么给QDialog标题栏更换背景图片?想法一:变通一下,去掉系统默认的标题栏,然后自己在dialog顶部弄个图片+最大最小化关闭按钮,这样的话,自己还得添加移动窗体的代码处理。想法二:可以想办法在style里面绘制。2.移动无边框窗体想法一:void EditDialog::mousePressEvent(QMouseEvent *event) { if (event->button(

woniuye的博客 578

Qt笔记:Linux下Qt的一些问题及解决方法

1、"/usr/bin/ld:cannot find -lGL"; 解决方法1:安装 OpenGL Library sudo apt-get install libglu1-mesa-dev 解决方法2:去掉 libGL.so 的版本号 sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so 2、编译出现libQt5WebEngineCore.so报错; ...

蚩尤的博客 826

linux下QT Creator常见错误及解决办法

最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hello world"的样例都跑不起来,现在通过查找资料将一些问题解决掉了,放在这里记录下来,已被后用和分享: 1、QApplication: No such file or directory (1)首...

weixin_30652491的博客 1025

Linux + qt 调用动态链接库的问题

在使用Linux + qt 调用动态链接库时,add library 时 提示 this .so does not exist 我直接调用DLL的build下的是可以的,但如果复制过来的话,使用时则就会出现上面的 问题 可以将build下的so 及相关的都拷贝出来,或者 建立软连接 ...

u012719076的博客 1008

在LINUX下QT编程使用过程中遇到的问题

1、QT工程创建后,如果需要交叉编译,那么.c和.h文件必须在同一目录下,否则交叉编译时会出现问题;若只是在系统下发布,则没有这一个目录级数 2、在ubuntu下使用QT时间较长时,会出现无法go to到你想去的函数那里,这个时候只需要关闭工程再重新打开就好,或者在程序中随便改动一点东西(比如打个逗号再删掉),然后点保存,也是可以的。 3、ubuntu中使用QT,打开在网上找的一些.c或者.h...

qq_34706266的博客 876

总结系列_13(Qt使用总结,续...)

总结系列_13(Qt使用总结,续...) QtCreator中使用的是MinGW进行编译的,所以在windows下如果想要下载QtCreator就需要下载对应mingw的版本,而不是vs的,否则是编译不了的。或者自己下载Qt源码库,用Cmake中选中MinGW重新编译即可。所以如果安装Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),则

autumn20080101的专栏 1768

Linux socket 编程中存在的五个隐患

Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是    开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。 相关文档:《linux socket 编程》  在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性。事实上,很难找到一种不支持 Sockets API 的现代语言

燕青专栏 2162

Linux下 Qt程序异常结束调试

首先确保系统已经安装GDB(使用的是Qt Creator) 先编译运行,报错之后,进入到项目目录,这时回产生一个core*文件 如果没有发现core*文件,那是因为系统默认的core文件大小为0不显示,这时则需要ulimit命令修改大小 已我的机器为例,ulimit -a查看大小 终端输入ulimit -c unlimited设置文件不做限制,注意不要在另起终端,因为ulimit命...

sunxiaoyan的博客 2791

Delphi 11.3使用LoggerPro2.0写日志

Delphi版本升级越高,就越缺乏相关的资料,毕竟用的人少了。本来想给自己的程序加点log,结果发现很难找到适合高版本的。XE5版本用的是Log4D,好像这个不支持更高的版本,报错后就放弃了,没心思去修改,后来发现LoggerPro2.0支持到Delphi 12的版本,就拿这个来用用吧,顺便简单记录一下用法,方便以后自己或者他人查询。

上一篇: Qt Designer使用
下一篇: Linux操作系统学习线路图
lpp1989
博客等级 码龄16年 20粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值