常见的几个Qt编程问题的处理(转自QT中文论坛)(挺实用的)
|
1、如何在窗体关闭前自行判断是否可关闭
答:重新实现这个窗体的closeEvent()函数,加入判断操作 void MainWindow::closeEvent(QCloseEvent*event)
{ if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } } 2、如何用打开和保存文件对话 QString fileName = QFileDialog::getOpenFileName(this);
if (!fileName.isEmpty()) { loadFile(fileName); } QString fileName = QFileDialog::getSaveFileName(this);
if (fileName.isEmpty()) { returnfalse; } 3、如何创建Actions(可在菜单和工具栏里使用这些Action) newAct =new QAction(QIcon(":/images/new.png"), tr("&New"),this);
newAct->setShortcut(tr("Ctrl+N")); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); openAct =new QAction(QIcon(":/images/open.png"), tr("&Open saveAct =new QAction(QIcon(":/images/save.png"), tr("&Save"),this); saveAsAct =new QAction(tr("Save &As exitAct =new QAction(tr("E&xit"),this); cutAct =new QAction(QIcon(":/images/cut.png"), tr("Cu&t"),this); copyAct =new QAction(QIcon(":/images/copy.png"), tr("&Copy"),this); pasteAct =new QAction(QIcon(":/images/paste.png"), tr("&Paste"),this); aboutAct =new QAction(tr("&About"),this); aboutQtAct =new QAction(tr("About &Qt"),this); 4、如何创建主菜单 fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("&Edit")); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); 5、如何创建工具栏 fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); fileToolBar->addAction(saveAct); editToolBar = addToolBar(tr("Edit")); 6、如何使用配置文件保存配置 QSettings settings("Trolltech","Application Example");
QPoint pos = settings.value("pos", QPoint(200,200)).toPoint(); QSize size = settings.value("size", QSize(400,400)).toSize(); QSettings settings("Trolltech","Application Example"); 7、如何使用警告、信息等对话框 int ret = QMessageBox::warning(this, tr("Application"),
tr("The document has been modified.\n" "Do you want to save your changes?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (ret== QMessageBox::Yes) return save(); elseif (ret== QMessageBox::Cancel) returnfalse; 8、如何使通用对话框中文化 另外,还有一个更快的方法,在源代码解开后有一个目录translations,下面有一些.ts, .qm文件,我们拷贝一个: 然后,我们就用Linguist打开这个qt_zh_CN.ts,进行翻译了,翻译完成后,保存后,再用lrelease命令生成 qt_zh_CN.qm,这样,我们把它加入到我们的qt project中,那些系统的对话框,菜单等等其它的默认是英文的东西就能显示成中文了。 9、在Windows下Qt里为什么没有终端输出? win32:CONFIG += console 10、Qt 4 for X11 OpenSource版如何静态链接? ./configure -static //一定要加static选项 11、想在源代码中直接使用中文,而不使用tr()函数进行转换,怎么办? QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 或者 QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); 使用GBK还是使用UTF-8,依源文件中汉字使用的内码而定 QMessageBox::information(NULL, "信息","关于本软件的演示信息", QMessageBox::Ok, QMessageBox::NoButtons);
12、为什么将开发的使用数据库的程序发布到其它机器就连接不上数据库? QApplication::addLibraryPath(strPluginsPath");
strPluginsPath是插件所在目录,比如此目录为/myapplication/plugins 13、如何创建QT使用的DLL(.so)以及如何使用此DLL(.so) TEMPLATE=lib 而源文件则和使用普通的源文件一样,注意把头文件和源文件分开,因为在其它程序使用此DLL时需要此头文件 LIBS += -Lyourdlllibpath -lyourdlllibname Windows下和Linux下同样(Windows下生成的DLL文件名为yourdlllibname.dll而在Linux下生成的为libyourdlllibname.so 14、如何启动一个外部程序 class MyThread :public QThread
{ public: void run(); }; void MyThread::run() 这样,在使用的时候则可定义一个MyThread类型的成员变量,使用时调用其start()方法: class
![]() ![]() ![]() ![]() ![]() { ![]() ![]() ..MyThread thread; ![]() ![]() ![]() ![]() };
15、如何打印报表 答: Qt目前对报表打印支持的库还很少,不过有种变通的方法,就是使用XML+XSLT+XSL-FO来进行报表设计,XML输出数据,用XSLT将XML数 据转换为XSL-FO格式的报表,由于现在的浏览器不直接支持XSL-FO格式的显示,所以暂时可用工具(Apache FOP, Java做的)将XSL-FO转换为PDF文档来进行打印,转换和打印由FOP来做,生成XSL-FO格式的报表可以由Qt来生成,也可以由其它内容转换 过来,比如有工具(html2fo)将HTML转换为XSL-FO。
|
http://blog.csdn.net/liuguangzhou123/article/details/7513590
常见的几个Qt编程问题的处理(转自QT中文论坛)(挺实用的)的更多相关文章
- QT笔记(1)--QT编程环境搭建
一.QT简介 Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊 ...
- 零基础学QT编程
吴迪.2010.1 北京航空航天大学出版社 Qt资源 CSDN QT http://bbs.csdn.net/forums/Qt/ QT编程网 http://www.qtbcw.com/ 编程论坛 ...
- 73 QT编程入门
0 引言 最近开始在QT下编程,记录一下遇到的问题以及解决方法. 1 安装下载及学习资料 (1)安装下载链接 安装链接: https://blog.csdn.net/qq_23473839/artic ...
- qt编程入门
面对qt编程,必须先知道qt中常用的类: QPushButton按钮类.QLabel标签类.QMessageBox对话框类.QCheckBox.QAction.QMenu.QStatusBar.QTo ...
- Visual Studio下Qt编程中对中文的处理
Visual Studio下Qt编程中对中文的处理 本文为原创文章,原文地址http://www.cnblogs.com/c4isr/p/qt_develop_in_vs.html Visual St ...
- Qt编程学习网站
http://blog.csdn.net/k122769836/article/details/8637677 QT - little_su - 博客频道 - CSDN.NET Qt - 1+1=2 ...
- 在windows下的QT编程中的_TCHAR与QString之间的转换
由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...
- 【Qt编程】Qt学习之窗口间的相互切换
在用Qt设计GUI时,经常要设计两个窗口之间的相互切换,即可以从一个窗口跳转到另一个窗口,然后又从另一个窗口跳转回原窗口.下面我们来介绍具体的实现方法: 工程建立及功能描述: 首先,我们建立Qt G ...
- 【Qt编程】QWT在QtCreator中的安装与使用
由于导师项目的需要,需要画图,二维+三维.三维图我用的是Qt+opengl,二维图我决定使用qwt工具库来加快我的项目进展,毕竟还有期末考试.关于Qt+opengl的使用有时间的话以后再介绍. ...
随机推荐
- Thermal management in a gaming machine
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to wager gaming ...
- cocos2d-x 3.0学习游戏笔记的例子《卡塔防》第五步---开始建立游戏界面
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码.第二能够说 ...
- Error: unrecognized flag -version
按照网上的教程http://www.ituring.com.cn/article/13473 来确认node.js是否成功安装. 须要在命令行输入:node -version. 但是我在命令行输入:n ...
- 经典卷积神经网络的学习(一)—— AlexNet
AlexNet 为卷积神经网络和深度学习正名,以绝对优势拿下 ILSVRC 2012 年冠军,引起了学术界的极大关注,掀起了深度学习研究的热潮. AlexNet 在 ILSVRC 数据集上达到 16. ...
- hadoop编程技巧(8)---Unit Testing (单元测试)
所需的环境: Hadoop相关jar包裹(下载版本的官方网站上可以): 下载junit包裹(新以及). 下载mockito包裹: 下载mrunit包裹: 下载powermock-mockito包裹: ...
- javascript的回调函数 同步 异步
后一个任务等待前一个任务结束再执行.程序执行顺序与任务排列顺序一致的,同步的. 参考: http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%B ...
- uinty3d导入错误问题解决
导入第一被复制到文件unity3d在相应的文件夹的安装文件夹.回归后,unity3d软体.正确的选择"输入". 版权声明:本文博主原创文章.博客,未经同意不得转载.
- [Unity3D]Unity3D游戏开发Lua随着游戏的债券(在)
---------------------------------------------------------------------------------------------------- ...
- Java之"Mozilla Rhino"引擎(二)
在Java中使用Rhino, 能让你使用类似Groovy, ECMAScript...等等之类的不同动态脚本语言, 其中值得推荐的是ECMAScript, 它是Rhino的默认实现, 同时也在JDK1 ...
- 利用属性中设置、查看DataContext Command等
DataContext 1 2 3 示例 1 2 xaml代码自动生成 3
"),this);