1、解决中文乱码问题:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
2、 a.cpp中添加了一个A类的私有槽函数:void open_dialog();
b.cpp中添加了一个B类的成员函数 CreatDialog()
使用open_dialog调用 CreatDialog 创建一个对话框,并且可以传送值到对话框中。
对话框中的exec要在open_dialog函数中书写,这样可以进行传值操作。
3、QT中给对话框添加最大化最小化
4、对话框添加最大化最小化Qt::WindowFlags flags;
flags = windowFlags();flags |= Qt::WindowMinimizeButtonHint;flags |= Qt::WindowMaximizeButtonHint;setWindowFlags(flags);
构造函数中添加如下几行代码即可
Qt::WindowFlags flags;
flags = windowFlags();
flags |= Qt::WindowMinimizeButtonHint;
flags |= Qt::WindowMaximizeButtonHint;
setWindowFlags(flags);
5、给标签插入图片
①添加新文件,选择QT资源文件
命名mySource会出现mySource.qrc
添加文件,添加前缀,即新建资源文件夹
添加图片到其中即可使用资源
②包含头文件:
③构造函数中添加:#include <QPixmap>#include <QLabel>
QPixmap bgPixmap(":/picture/button/Button3.png");QLabel * m_pBgLabel = new QLabel(this->centralWidget());m_pBgLabel->setPixmap(bgPixmap);
m_pBgLabel->show();
6、设置固定大小:this->setFixedSize(500,500);7、调用调色板,添加背景色
QPalette titlePalette;titlePalette.setBrush(QPalette::Background,Qt::yellow);this->setPalette(titlePalette);8、delete释放对象数组时,要加[ ],一般的数组(或者自定义非标准结构体)删除时候加上肯定可以。USBDeviceInfo *m_pUSBDevice;if(m_pUSBDevice != NULL) {delete []m_pUSBDevice; m_pUSBDevice = NULL;}9、定义一个路径的宏 #define DEVICE_EXIST_FILE "/tmp/USB_exist"10、函数传参,内部修改参数,使用参数int Total; getStorageInfo((char *)"/media/U",&Total,1);int DUSBDeviceSelect::getStorageInfo(char * MountPoint, //SD卡随便一个分区 int *Capacity, // 想要获取的空间大小 int type) //获取什么类型的空间 { struct statfs statFS; //系统stat的结构体 U64 usedBytes = 0; U64 freeBytes = 0; U64 totalBytes = 0; U64 endSpace = 0; if (statfs(MountPoint, &statFS) == -1){ //获取分区的状态 printf("statfs failed for path->[%s]\n", MountPoint); return(-1); } totalBytes = (U64)statFS.f_blocks * (U64)statFS.f_frsize; //详细的分区总容量, 以字节为单位 freeBytes = (U64)statFS.f_bfree * (U64)statFS.f_frsize; //详细的剩余空间容量,以字节为单位 usedBytes = (U64)(totalBytes - freeBytes); //详细的使用空间容量,以字节为单位 switch( type ) { case 1: endSpace = totalBytes/1024/1024; //以MB为单位的总容量 break; case 2: endSpace = usedBytes/1024/1024; //以MB为单位的使用空间 break; case 3: endSpace = freeBytes/1024/1024; //以MB为单位的剩余空间 break; default: return ( -1 ); } *Capacity = endSpace; //这个不用说了吧 return 0; }11、字符串转换为10进制bool ok; //toInt 中是否是正确的输入,很多函数中也有成功与否的标志,可以利用此进行提示 int index = strUSBDeviceIndex.toInt(&ok,10); //字符串转换成10进制
//基本语法实例QString str = "FF"; bool ok; int hex = str.toInt(&ok, 16); // hex == 255, ok == true int dec = str.toInt(&ok, 10); // dec == 0, ok == false12、emit使用的信号定义signals: void selectUSBDeviceFinishSignal();某个函数中调用:emit selectUSBDeviceFinishSignal();