QT高级编程之基本函数用法

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);
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第1章 混合桌面/internet应用程序 1.1 internet相关窗口部件 1.2 webkit的使用 第2章 声音和视频 2.1 qsound和qmovie的使用 2.2 phonon多媒体框架 第3章 模型/视图表格模型 3.1 qt的模型/视图架构 3.2 用于表格的qstandarditemmodel 3.3 创建自定义表格模型 第4章 模型/视图树模型 4.1 用于树qstandarditemmodel的用法 4.2 创建自定义树模型 第5章 模型/视图委托 5.1 与数据类型相关的编辑器 5.2 与数据类型相关的委托 5.3 与模型相关的委托 第6章 模型/视图中的视图 6.1 qabstractitemview子类 .6.2 与模型相关的可视化视图 第7章 用qtconcurrent实现线程处理 7.1 在线程中执行函数 7.2 线程中的过滤和映射 第8章 用qthread实现线程处理 8.1 独立项的处理 8.2 共享项的处理 第9章 创建富文本编辑器 9.1 qtextdocument简介 9.2 创建自定义的文本编辑器 9.3 一个单行的富文本编辑器 9.4 编辑多行的富文本 第10章 创建富文本文档 10.1 高质量地输出qtextdocument文件 10.2 创建qtextdocument 10.3 输出和打印文档 10.4 绘制页面 第11章 创建图形/视图窗口 11.1 图形/视图架构 11.2 图形/视图窗口部件和布局 11.3 图形项简介 第12章 创建图形/视图场景 12.1 场景、项和动作 12.2 增强qgraphicsview的功能 12.3 创建可停靠的工具箱窗口部件 12.4 创建自定义图形项 第13章 动画和状态机框架 13.1 动画框架简介 13.2 状态机框架简介 13.3 动画和状态机的结合 结束语 精选书目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值