Qt Creator使用问题总结

这篇作为本人在使用Qt Creator过程中遇到的问题,进行总结,以后遇到其他问题,会在这里持续更新。

1.QT Creator 编译会将可执行文件生成到一个类似projectname_build-desktop的目录中,解决办法

不清楚这样设计初衷是什么,但对于一些从windows开发的人有点不习惯,个人估计是这样分开条理清晰。

选择左边"Projects"标签 -> General栏目里面有一个选择框"Shadow Build" , 取消选择即可!


2.QT 智能提示设置

关于QT的智能提示,有两点:

一:默认只能在Ctrl+Space或打(“.”会自动转成" ->")的时候会出现。

由于Ctrl+Space默认在我电脑上是输入法的切换。所以一直以为没这个功能,敲代码时特别郁闷。

于是在QT Creator中的Tool->Option中的Environment->Keyborad中把快捷键改成Ctrl+J[vs用习惯了],Qt Creator里已经有了Ctrl+J,自己可改为别的。

 

二:默认的智能智能提示区别大小写

这个也很郁闷的,敲的快一点总有一个大小写没敲对智能提示就没了。

这个去掉大小写区别提示的设置在:

QT Creator中的Tool->Option中的Text Editor->Completion 里的第一个"Case-sensitive completion"的勾去掉就行了。


3.Qt(V3.2.1)程序运行自动弹出qtcreator_process_stub终端,关闭方法

在“选项”里一直没有找到,弹出终端的原因,最后发现在项目的“项目”-“运行”-“在终端中运行”选项被勾选上,取消勾选,以后就不会弹出。


4.Qt未安装调式器

就是程序只能Ctrl+R 运行,但不能F5调试,而且在代码中加断点不能停下来,在各种摸索后,终于把这个问题搞定了,原来是我没有安装Debugging Tools for windows,这个东东就是windows环境下的编译器,本来想去官网下,但是找来找去没找到,于是我自己百度了一个下载这个东东的地方 (http://down.tech.sina.com.cn/content/29175.html  Windows Debugging Tools for windows(32bit)6.6)

      下载好后,安装到某一地方,我是装在E盘的,之后打开QT Creater后,在菜单的“工具”-->“选项”-->“构建与运行”中的“构建套件(Kit)”选项卡下面手动设置中,单击“桌面(默认)”,会出现许多栏,在“调试器”那一栏的右边有一个“自动检测”按钮,它会自动检测到刚才你保存好的Debugging Tools for windows下的cdb.exe,单击确定就可以了,之后可能还会跳出一个对话框,我是直接默认确定的,然后就可以调试程序了,设置断点的时候也能够停下来!


5.Qt调式器不能进入断点

在Windows环境下,使用Qt Creator 开发过程中会遇到调试问题。如何在Qt Creator里面单步调试呢? 
与平时在VS里面开发过程有点不同的是,在Qt Creator当中,编译使用MSVC,但是调试是使用cdb.exe。 
因为,cdb.exe是 Debugging tools for Windows 中的一部分,所以需要下载微软的调试工具。

下载地址: http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx 

当安装完成之后,还需要调试符号,调试符号是需要从微软的调试符号服务器上面去下载的。 
链接如下: 
symsrv*symsrv.dll*D:\mysymbols*http://msdl.microsoft.com/download/symbols 
注意:上面的链接是下载到D:\mysymbols,大家可以改一下。 

大家在下载时注意,现在没有独立的调试工具包下载了,已经被纳入到驱动开发包当中。

驱动开发包共1G,而真正用到的调试工具,只有几十M。

 



下面我们就开始配置Qt Creator: 
1. Tools –> Options –> Debugger –> CDB

     Symbol paths:  symsrv*symsrv.dll*D:\mysymbols*http://msdl.microsoft.com/download/symbols 

qtcdb2 



2.  增加cdb.exe的路径

     Tools –> Options –> Build & Run –> Kits

     点击 Manual  –> Desktop (default),如下图 

     qtcdb 
    
在 Debugger: 当中增加刚才安装的 Debugging tools for Windows目录下面的cdb.exe

重启Qt Creator,就可以调试了!

若还不行可能是使用了第三方库的问题,这么说吧,直接到Debug目录下打开编译好的exe若能直接运行说明可以调试,若不能则缺少相关的dll,把dll拷到Debug下即可调试

6.Qt在GUI程序里显示控制台界面

在GUI程序里有时我们想简单的打印些信息来进行测试,然而因为不是控制台程序,所以不能直接通过控制台输出,要实现这点就要做一下两点:

1:在.pro文件中加入一句: CONFIG+= console

2:在运行设置里勾选在终端运行的选项

注:如果只做了第一点,那么信息会显示在” 应用程序输出“窗口,也可以用来查看测试结果。

7.Qt控制台和带窗口的区别  

选择创建控制台生成以下代码
#include <QtCore/QCoreApplication>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    return a.exec();
}
.pro文件如下
#-------------------------------------------------
# 
# Project created by QtCreator 2012-03-30T15:34:14 
# 
#-------------------------------------------------  
QT       += core 
QT       -= gui 
TARGET = test1
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp


如果要想变成带窗口的程序需要做如下改变
QCoreApplication a(argc, argv);
变成
QApplication a(argc, argv);
QCoreApplication 
是控制台的Application
QApplication 
是带窗口的Application
最后变化如下
#include <QtGui/QApplication>
#include <QtCore>
#include <QWebView>
#include <QWebFrame>
#include <QThread>
#include <QUrl>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextStream out(stdout);
    out << "start"; 
    QWebView * pWebView = new QWebView(); 
    pWebView->load(QUrl("http://bj.58.com"));
    pWebView->show();  
    out<<pWebView->page()->mainFrame()->toHtml();
    //SleeperThread::sleep(-1);
    printf("aaa");
    return a.exec();
}
#-------------------------------------------------
# 
# Project created by QtCreator 2012-03-30T14:58:34
#
#------------------------------------------------- 
QT       += core gui webkit network  
#QT       -= gui 
TARGET = MyBlog
TEMPLATE = app
CONFIG   += console
CONFIG   -= app_bundle  
SOURCES += main.cpp

8.在控制台程序里显示窗口

这个问题跟第6个问题有点相似,但是从不同的角度考虑的。在控制台程序里显示窗口就会出现以下问题

 

Error: QWidget: Cannot create a QWidget without QApplication


产生这个错误的原因是这个QWidget 是建立在QApplication 上的,(From the docs, the QApplication class manages the GUI application's control flow and main settings whilst the QCoreApplication class provides an event loop for console Qt applications),所以要把控制台的QCoreApplication变成QApplication就可以了。

9.QApplication与QCoreApplication

简单点就是非图形模式下只能用QCoreApplication,图形模式下必须用到QApplication,而QApplication是继承QCoreApplication的,所以在图形模式下只要按照以上第6条就可以显示出控制台窗口了。那在非图形模式下也就是控制台只能按照以上第八条解决了。

具体两者的区别和联系



展开阅读全文

没有更多推荐了,返回首页