QT creator 编程中常见问题记录

QT creator 编程中常见问题记录

       虽然都是一些细枝末节的东西,但是如果不记录下来,时间久了容易忘记,再次遇到时还是会耽误自己的时间,

因此记录于此,方便查阅,同时遇到新的问题也会更新进来。


<0>安装问题

qtCreaotr如果是自己下载二进制安装包,最好以普通用户安装到自己的目录下

,否则权限问题,环境变量问题很让人头痛

 另外 有时安装某些QT对应发行版的软件管理器会自动帮你安装一个QMAKE
 这时如果与QTcreator的QMAKE不对应,会出现很隐蔽的错误
 所以要保持系统只有一套QMAKE
 
<1>出现#include <GL/gl.h>:GL/gl.h:No such file.
一定是freeglut3-dev缺失
找到自己发行版对应的软件包管理工具把它装好就OK


<2>LineEdit等Qwidget改变字体颜色
QPalette p = palette();
p.setColor(QPalette::Text, QColor(0, 255, 0));
lineedit.setPalette(p);

<3>setFocus可让对应控件获得焦点


<4>QT判断文件/文件夹是否存在
QFileInfo::exists() or QFile::exists().

文件可以静态方法调用
QDir dir("./dir");
std::cout<<dir.exists()<<std::endl;


文件夹必须先声明对象


<5>QT创建配置文件


用QSettings写ini文件:
  QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
  ConfigIni->setValue("/config/node1",ui->lineEdit->text());  
  delete ConfigIni;  



用QSettings读ini文件:
 
 QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
  ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString());  
  delete ConfigIni;  

  
 <6>字符串分割
 
 QString str = "one, two, three, four";
  cout << str.section(',', 1, 1).trimmed().toStdString() << endl;
  return 0;

  结果是 "two",前后不包含空格。trimmed() 去掉字符串前后的ASCII字符 '\t', '\n', '\v', '\f', '\r'


<7>LineEdit输入检查
Qt提供了三个内置验证器类: QDoubleValidator, QIntValidator, QRegExpValidator


正则表达式检查,高手会用的很爽,我目前只能简单地应用下
QRegExp regExp2("[0-9]{1,2}[.][0-9]{0,2}");
QRegExpValidator *pRegExpValidator2 = new QRegExpValidator(regExp2,this);
ui->lineEdit_2->setValidator(pRegExpValidator2);



整数范围
QIntValidator *motor_speed_Validator= new QIntValidator(0,12000,this);
ui->Edit_motor_speed->setValidator(motor_speed_Validator);


同样还有QDoubleValidator
QDoubleValidator *validator=new QDoubleValidator(0,99,2,this);
validator->setNotation(QDoubleValidator::StandardNotation);
uii->lineEdit->setValidator(validator);


0是下界,99是上界,2是小数位数


<8>QString和Int的互换
long a = 63;
QString s = QString::number(a, 10);             // s == "63"
QString t = QString::number(a, 16).toUpper();     // t == "3F"



double,float,int 对于QString 有相应的toDouble,toFloat,toInt函数调用
Qstring str="FF";  
bool ok;  
int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
int hex =str.toInt(&ok,16); //hex=255;ok=true;  


<9>中文输入的问题
想省事直接安装IBUS IBUS-QT IBUS-PINYIN
喜欢Fcitx
ubuntu下:sudo apt-get install libfcitx-qt5-0
suse下:software.opensuse.org里搜索 fcitx-qt5安装相应的包即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值