1.QString类函数介绍
- toInt()函数,可以将整型按照不同进制转换为QString对象;
- number()函数,可以将QString对象转换为不同进制的数字;
2.文档查询方法:通过Qt Creator编辑器通过帮助->索引->QString查看QString类的相关文档,里面包含了QString类的成员函数,静态方法,宏以及继承而来的方法等相关信息。
3.工程中的Q_OBJECT宏:
- Qt提供了元对象系统的机制,其中包含了信号与槽的内部机制,能够访问QObject子类的元对象信息的功能;
- QOBJECT宏声明了在每个QObject子类中必须的内省函数,如metaObject()、tr()、qt_metacall();
- Qt的MOC工具生成了Q_OBJECT声明的所有函数和所有信息的实现;
- connect(),disconnect()可以建立信号与槽的连接与释放;
对于自己写的类,想要具备信号与槽机制,在类中添加Q_OBJECT宏即可;
4.QComboBox,QListWidget、QTableWidget、QTreeWidget控件中都有item,可以通过右键->编辑项来添加可选项;
- QComboBox:currentIndex()函数可以判断下拉框选中的项的索引
5.QMessageBox:提供一个模态对话框显示消息;
- 模态对话框:只能操作当前的模态对话框,其他对话框不能操作;
- 非模态对话框:多个对话框之家可以切换操作;
6.UIC的使用
UIC可以编译.ui文件,把它编译为源文件.进入QT的命令行模式,通过过下面命令可以编译.ui文件.
uic mainwindow.ui >>ui_mainwindow.h
7.通过创建从QMainWindow继承的项目,在菜单栏输入文件(&F),即在程序中创建了一个文件菜单选项,并且指定了快捷键为Ctrl + F.
8.属于QtGui模块的类,可以自动释放资源,而对于QtCore核心模块的资源需要手动释放资源.
9.相关函数介绍:
- QTextStream : readAll():读取所有文本信息;
- QFileDialog:getOpenFileName():获取打开文件对话框选择的文件名;
- QMessageBox:information():显示信息;
- QFile file:
- errorString():显示错误信息;
- open(QIODevice::ReadOnly):打开文件并指定打开模式;
//保存
QString filename = QFileDialog::getSaveFileName(this,"保存",QDir::currentPath());QFile *file = new QFile();
file->setFileName(filename);
bool success = file->open(QIODevice::WriteOnly);QTextStream os(file);
//将文本框中的文本转化为纯文本并写入文件;
os<<ui->textEdit->toPlainText();
file->close();
delete file;
10.QTextEdit类用法
- 槽函数:具有清除,拷贝,剪切等槽函数,QTextEdit支持这些操作.
11.QFontDialog,获取字体对话框;
bool success;
QFont font = QFontDialog::getFont(&success,this);
12.QColorDialog类用法
QColor color = QColorDialog::getColor(Qt::red,this);
//如果颜色可用
if(color.isValid())
{
}
else
{}
13.QDateTime显示当前时间
QDateTime current = QDateTime::currentDataTime();
//设置时间显示格式,yyyy表示年份,M月份,dd日期,hh小时,mm分钟,mm秒,2021-7-25 20:21:00
QString time = current.toString("yyyy-M-dd hh:mm:ss");
14.QMenu::triggered信号:
菜单项被点击将触发该信号,将该信号连接到相应的槽即可实现相应的操作.
15.资源文件的添加和使用
- 将资源拷贝到工程目录下,通过添加资源来添加,创建资源文件.qrc后,通过Add->Add Prefix,Add->Add->File来添加项目目录下的资源.然后Save all保存.
- 切换到ui界面,通过Action Editor来为每个菜单项添加图标,Edit->Icon->选择资源,进入到资源选择界面,将添加的资源刷新,即可在界面显示添加的资源,然后选择需要添加的icon即可.
- 可以直接将Action Editor中的选项拖拽到工具栏即可实现工具栏图标的添加.并且与与功能关联在一起.
- 通过右键->改变样式表->Add Resource->border-image,可以为ui界面添加背景图片,背景随着窗口大小自动调整.
16.设置编辑框为密码框
ui->lineEdit->setEchoModel(QLineEdit::Password);
17.Ollydbg可以对一个程序进行分析,通过将程序拖拽进Ollydbg,可以对其进行分析.
18.QDesktopServices类
可以对桌面程序进行服务,如打开一个网页,可以通过如下方法来实现.
QDesktopServices::openUrl(QUrl("www.baidu.com"));
19.QMovie类用法
同Label对象显示gif动画,主要通过QMovie类来实现.
QMovie *movie = new QMovie("movie.gif");
ui->movielabel->setMovie(movie);
movie->start();...movie->stop();...//获取gif的帧数
movie->frameCount();
20.程序启动画面
使用QSplashScreen类来实现.
QPixmap pixmap("start.png");
QSplashScreen splash(pixmap);
//显示
splash.show();//程序初始化操作,时间长时,将可以看到启动画面,
MainWindow w;
...//关闭
splash.finish(&w);
21.关闭事件
主要使用QCloseEvent类实现,所有的事件都是受保护的成员函数.根据需要处理关闭事件.
QClostEvent* event;
- enent->accept();
- event->ignore();
22.打包编码乱码问题
- 可以通过将所使用的Qt版本下plugins下的codecs文件夹拷贝到项目目录下一起进行打包.
- 设置中文
//设置中文
#include<QTextCodec>
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForCString(QTextCodec::codecForName("gb2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));
23.临时文件和临时目录
主要通过QTemporaryFile来操作临时文件,临时目录是用来存放临时文件的,不同平台具有不同的临时目录,可以通过 QDir::tempPath() 来获取临时目录.
//打印目录
QDir::homePath();//管理员用户目录
QDir::rootPath();//根目录
QDir::tempPath();//临时目录
24.文件属性类QFileInfo
QDateTime time = QFileInfo::created(); //创建时间
QDateTime time = QFileInfo::lastRead(); //最后访问时间
qint64 size = QFileInfo::size(); //文件大小
QDateTime time = QFileInfo::isDir(); //是否是文件夹
25.QListWidget用法
- 项的概念,添加项Item,通过QListWidgetItem来构造项,并添加.也可以添加图标资源.
//添加项
QListWidgetItem *item = new QListWidgetItem();
item->setText("北京");
listWidget->addItem(item);//删除项
int count = listWidget->count();//获取项数量//注意:通过循环来删除所有项时,需要注意每删除一个后面的项会往前移,导致原来的删除逻辑容易出错,因此可以一直删除第一个就可以全部删除;
listWidget->takeItem(i);//删除第i项;//全部删除
for(int i = 0;i<count;++i)
{listWidget->takeItem(0);
}
- 通过setViewMode() 函数可以设置控件的显示模式,是列表模式还是图标模式.
//图标模式
listWidget->setViewMode(QListWidget::IconMode);
- 项的点击信号:QListWidget中的项相应点击信号,查阅QlistWiget可以发现,具有itemDoubleClicked(QListWidgetItem* item)和itemClicked(QListWidgetItem* item)信号,因此可以编写两个槽函数来响应信号.
26.QStringList字符串列表
继承QList< QString>而来.
//获取所有文件夹和文件的名称
QDir dir = QDir::current();
QStringList filenames = dir.entryList();
//QFileDialog::getOpenFileNames(this,"Get All File Name.",QDir::currentPath());for(int i = 0;i<filenames.size();++i)
{QString name = filenames.at(i);//获取值
}
28.截图操作相关知识介绍
获取图片时,需要把截图程序窗口最小化或隐藏,在执行截图操作.
- 通过QPixmap::grapWindow(winID)来获取winID标识的窗口图片;
- QDesktopWidget:可以获取当前程序所在的窗口ID;
- WId id = winId();
在IDE中,将鼠标放到一个函数上,可以显示该函数的参数,在显示参数的时候按下F1,可以跳转到该函数的说明文档界面.
//隐藏
this->hide();//获取当前程序所在屏幕的id;
QPixmap::grapWindow(QApplication::desktop()->winId());//按比例缩放图片到指定大小,scaled函数
ui->screenLabel->setPixmap(this->pixmap.scaled(ui->screenLabel->size()));//QTimer 定时器类用法,具有timout信号,可以处理超时信号
QTimer timer->start(5000);//计时5秒,timer->stop();//停止计时
//发出声音;
qApp->beep();
- 保存截图:通过QDesktopServices类中的storageLocation()函数来保存信息,可以设置保存到“我的文档”,“图片”等系统默认的文件夹中。
//保存到图片文件夹
QDesktopServices::storageLocation(QDesktopServices::PicturesLocation);
QString fileName = QFileDialog::getSaveFileName(this,"Save File",QDesktopServices::storageLocation(QDesktopServices::PicturesLocation));//保存截图
pixmap->save(fileName);
29.系统剪切板QClipboard
- 数据保存到剪切板,可以用于进程间通信。
QClipboard *clip = QApplication::clipboard();//获取剪切板文本
Qstring s = clip -> text();//向剪切板中添加图片
clip->setPixmap(pixmap);