Qt编程总结

文章目录

      • Qt选择文件对话框
      • Qt选择目录
      • Qt获取文件大小
      • QMessageBox
      • Qt设置应用程序图标
      • Qt应用程序upx压缩
      • Qt去掉最大化最小化按钮和最大化
      • Qt数据类型转换
      • qDebug

Qt选择文件对话框

#include 
void MainWindow::open() 
{ 
     QString path = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files(*.jpg *.png)")); 
     if(path.length() == 0) { 
            QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files.")); 
    } else { 
       QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path); 
    } 
}

Qt选择目录

QString QFileDialog::getExistingDirectory(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly)

Qt获取文件大小

QString fileStr = fileNameEdit->text(); 
QFileInfo fileInfo(fileStr);  
qint64 size = fileInfo.size(); 
//--获取文件创建时间  
QDateTime buildTime = fileInfo.created();  
 //--获取文件最近修改时间  
QDateTime lastMdTime = fileInfo.lastModified(); 
 //---获取文件最近访问时间  
QDateTime lastVisitTime = fileInfo.lastRead();  

QMessageBox

QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); 
QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
QMessageBox::about(NULL, "About", "About this application");
QMessageBox::about(NULL, "About", "About this application");

Qt设置应用程序图标

  1. 准备一张图片,须是.ico格式的,修改文件名为:xxx.ico
  2. 通过新建文本文件,然后另存为文件后缀名为rc(resource script 资源脚本)文件xxx.rc
  3. 在xxx.rc文件中输入:IDI_ICON1 ICON DISCARDABLE “xxx.ico”,保存文件;
  4. 在项目pro后缀名的文件中,添加:RC_FILE += xxx.rc
  5. 重新编译程序

Qt应用程序upx压缩

下载UPX http://upx.sourceforge.net/download/upx308w.zip
解压缩后,只有 upx.exe 是有用的,可以将它放在 mingw32\bin 或 windows\system32 下,省去设置路径的烦恼
打开QT命令工具执行命令:upx -9 $(TARGET)
-9 的意思是,最大压缩率。

Qt去掉最大化最小化按钮和最大化

  1. 去掉关闭按钮,去掉帮助按钮
setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint);
  1. 其它按钮
setWindowFlags(Qt::CustomizeWindowHint
               | Qt::WindowTitleHint
               | Qt::WindowMinimizeButtonHint
               | Qt::WindowMaximizeButtonHint
               | Qt::WindowCloseButtonHint
               );
//WindowFlags包括:
Qt::FrameWindowHint://没有边框的窗口
Qt::WindowStaysOnTopHint://总在最上面的窗口
Qt::CustomizeWindowHint://自定义窗口标题栏,以下标志必须与这个标志一起使用才有效,否则窗口将有默认的标题栏
Qt::WindowTitleHint:显示窗口标题栏
Qt::WindowSystemMenuHint://显示系统菜单
Qt::WindowMinimizeButtonHint://显示最小化按钮
Qt::WindowMaximizeButtonHint://显示最大化按钮
Qt::WindowMinMaxButtonsHint://显示最小化按钮和最大化按钮
Qt::WindowCloseButtonHint://显示关闭按钮

Qt数据类型转换

  1. QString转QByteArray
QString str("123abc小马哥");
QByteArray byte1 = str.toLatin1(); //按照ASCII编码转换,无法转换中文
QByteArray byte2 = str.toUtf8(); //按照Utf-8编码转换,可以转换中文
qDebug() << "byte1:" << byte1 << "byte2:" << byte2;
  1. QByteArray转QString
QByteArray byte("123abc小马哥");
QString str(byte);
qDebug() <<  "byte:" << byte << "str:" << str;
  1. QString转char*
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();    
ch=ba.data();

如果涉及中文,建议通用用utf-8格式,可以避免莫名其妙的乱码现。这一点在代码编辑上建议也是使用utf-8格式。如下:

Qstring str;
char* ch;
QByteArray ba = str.toUtf8();    
ch=ba.data();

对于涉及中文情况,也可以先将QString转换为标准库string类型,然后再将string转换为char*

QString str;
std::string str = filename.toStdString();
const char* ch = str.c_str();
  1. char *转QString

方法一:直接用QString的构造函数转换

char* ch = "acuity";
QString str(ch);

方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16()

char* ch = "acuity";
QString str = Qstring::fromUtf8(ch);
  1. QString转int
    使用toInt函数
QString str("1000");
int tmp = str.toInt();

或者

bool ok;
QString str("10000");
int tmp = str.toInt(&ok);
注:ok表示转换是否成功,成功则ok为true,失败则ok为false
  1. int转QString
    使用QString::number()
int tmp = 100;
QString str = QString::number(tmp);

qDebug

  1. QString类型变量
QString str = "abc";
qDebug("%s", qPrintable(str));
  1. QByteArray类型变量
QByteArray ba;
qDebug("%s",ba.toStdString().c_str());

你可能感兴趣的:(QT)