Qt学习笔记1:创建ui及项目文件
在qt的命令行中输入designer,进入qt设计师界面,可以进行图形化的窗口设计
如新建一个test.ui的ui文件(主窗口的objectName也要设为test)
将文件保存到text文件夹下(最好名称一致,不然在后来的项目命名中可能出现故障,如果一致,只需命名为text.pro即可)
在该文件夹下,新建一个main.cpp文件,代码如下
#include <QApplication>
#include <QDialog>
#include "ui_test.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::test ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog ->show();
return app.exec();
}
新建成ui及main.cpp文件后,通过qt命令行进入项目所在的文件夹,打开盘符,
只需要输入盘符+英文冒号,打开文件夹,输入cd+文件夹名(大小写都可)
输入qmake -projec
命令,生成Makefile文件
输入qmake text.pro
命令,生成项目文件
输入make
命令,生成ui_test.h
文件,完成
Qt学习笔记2:创建继承于ui的类
打开刚刚建立的项目后,添加一个C++头文件,因为命名惯例可以命名为test.h
(test同时也是.h文件里类的名字,两者用相同名字,这样同样是为了使用方便)
#ifndef INPUTWEEKS_H
#define INPUTWEEKS_H
#include <QDialog>
#include "ui_test.h"
class test : public QDialog, public Ui :: test
{
Q_OBJECT
public:
test(QWidget *parent = 0);
};
#endif // INPUTWEEKS_H
创建实现该.h文件的cpp文件,代码如下
#include "testdialog.h"
test::test(QWidget *parent):QDialog(parent){
setupUi(this);
}
使用test.h
创建窗口,main.cpp
需要修改如下:
#include <QApplication>
#include <QDialog>
#include "test.h"
int main(int argc, char *argv[]){
QApplication app(argc, argv);
test *dialog = new test;
dialog ->show();
return app.exec();
}
Qt学习笔记3:创建子窗口
假设已经有了一个叫做son的项目,假设要把它作为子窗口添加进test项目中 先把ui_son.h、son.h、son.cpp拷贝到test项目文件夹下,并在test项目中添加这些文件
修改test.h文件
-
添加
#include "son.h"
-
在test.h的test类里,添加代码
private: son *1; //即用son.h新建一个叫son1的窗口,这里窗口名和类名最好不一样 private slots: void show(); //一个私有槽,即将son1显示出来
-
在test.cpp的构造函数里里,添加如下代码:
son1 = new son();
在成员函数之外,定义槽
void test::show(){ son1 ->show(); }
-
假设父界面上有一个objectName为button的按键,在构造函数添加代码如下:
connect(button, SIGNAL(clicked()), this, SLOT(show())); //即按下该按键是,打开show()槽
-
运行程序即可,按下button键即可打开子窗口
Qt学习笔记4:常用控件
略
Qt学习笔记5:常用信号和函数
-
clicked()
按键的按下信号 -
toggled()
确定框CheckBox的确定信号
-
dialog -> show();
显示当前窗口 -
dialog ->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
当前窗口显示在最前端 -
lineEdit -> text();
获取当前lineEdit中的字符串,一般为QString类型 -
label -> setText(QString);
将当前label中显示的文字设定为括号中的QString -
closed()
关闭当前窗口 -
setVisible(bool)
设置当前控件可见 -
ListWidget ->clear()
清空列表控件 -
lineEdit ->text().toInt()
将lineEdit中的字符串转为整数 -
QString.length()
得到QString字符串的长度 -
QString[i].toAscii()
将QString中的一个字符转换为相应的ASCII码 -
ListWidget ->addItem(new QListWidgetItem(QString))
在ListWidget列表控件里添加一行 -
remove(filename)
C++的标准函数,包含在"stdio.h"头文件里,用来删除文件 -
TextEdit->setTextUnderline(true)
表示在以下TextEdit显示的内容下面加下划线,使用完成后,用TextEdit->setTextUnderline(false)
关闭
Qt学习笔记6:小白教的大神笔记以及一些自己总结的知识
-
任何一个控件名都不可以和任何一个槽同名
-
声明全局变量的方法:在main.cpp里声明,在其他地方用extern命令引用,如在main.cpp里声明int test,在其他地方引用
extern int test
-
将结构体声明全局变量的方法,将结构体放在.h文件里,在所有需要用的地方包含这个.h文件,在用extern命令引用结构体声明的变量
-
结构体里变量的初始化可以在结构体里完成,如
#define maxlength 100 struct LIST { Lesson lesson[maxlength]; int last; LIST(){ last = 0; } };
-
在父窗口里操作子窗口里的控件,要使用 子窗口名 ->控件名 来引用
-
这个代码需要一行头文件
#include <QTextCodec>
汉语的乱码显示问题,在主源文件里添加
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
并且在每一个使用中文的地方,使用tr(QString)的方式,如
label ->setText(tr("课程"))
-
一维数组作为函数变量时,中括号里不带数组长度,二维数组作为函数变量时,第一个长度不写,第二个长度写
-
在调试时,右边的窗口,右键点击添加新的算术表达式,即变量名,这样在下面就会出现一个窗口,显示这个变量当前的值
-
在QString里,汉字占一个字节的位置