1、对话框中去掉右上角的问号帮助按钮:
- test_dialog->setWindowFlags(test_dialog->windowFlags()&~Qt::WindowContextHelpButtonHint);
2、过程中创建的子对话框QDialog *dialog;在其关闭后,应看情况释放其所占内存,解决方法是在其构造函数中对Qt::WA_DeleteOnClose的属性进行设置:
test_Dialog::test_Dialog()
{
setAttribute(Qt::WA_DeleteOnClose);
}
如果dialog是在stack上分配的,如QDialog dialog;则不能这样做,因为在退出时它会自动被析构,加上使用Qt::WA_DeleteOnClose指定的析构, 这样算起来它就得经历两次析构,所以会崩溃.
Qt::WA_DeleteOnClose只是delete了dialog,但并未将其初始化为NULL,所以关闭后仍有dialog==ture.比如dialog关闭后if(dialog) dialog->show();会出错。
3、利用 QFileDialog::getOpenFileName()获取的是完整路径名+文件名,要提取出其中的文件名或路径如下:
- QString file_full, file_name, file_path;
- QFileInfo fi;
- file_full = QFileDialog::getOpenFileName(this); //如"F:/myFile/test.txt"
- fi = QFileInfo(file_full);
- file_name = fi.fileName(); //test.txt
- file_path = fi.absolutePath();
4、各种类型的转换
(1)char * 转QString
将char * mm转换为QString str:
str = QString(QLatin1String(mm));
(2)const char*转char*
const char* cc;
char * c;
c = const_cast<char *>(cc);
将int a转换为QString str:
str = QString::number(a, 10);
(4)string和QString相互转换
QString qstr;
string str;
str = qstr.toStdString();
qstr = QString::fromStdString(str);
6、c++全局变量的声明与定义
比如要使用全局变量my_global,在test.h中声明,在test.cpp中定义。声明与定义在函数外部进行。
在test.h中声明:在test.cpp中定义:extern int my_global;
在需要使用该变量的文件中 #include "test.h"即可。#include "test.h" int my_global;
也可以把全局变量的声明和定义放在一起,然后把引用它的文件中的#include "test.h"换成extern int my_global;。 但是这样做不能使用#include "test.h",否则可能会出现重定义错误。