学习Qt的一些问题汇总

1、Qt的dos创建过程

第一步:使用Qt Designer设计好自己想要的界面

第二步:将设计好的界面保存起来,保存文件的后缀一定要是.ui,即如下形式:filename.ui。假设我的界面保存在自己的D盘的Qt for Qt creator目录下的gotocell目录下

第三步:到保存了.ui文件的目录下创建.cpp文件,这个文件是要运行的文件,且要调用到.ui文件

自己的main.cpp文件如下:

#include<QApplication>
#include<QDialog>

#include"ui_gotocelldialog.h"

int main(int argc,char * argv[])
{
    QApplication app(argc,argv);

    Ui::GoToCellDialog ui;
    QDialog * dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->show();

    return app.exec();
}

第四步:打开dos界面

第五步:切换到.ui文件所在的目录,dos中的命令有:

d:

cd Qt for Qt creator

cd gotocell

此时这个目录下只有两个文件,一个使自己在Qt Designer中所创建的gotocelldialog.ui文件和自己在第三步所创建的main.cpp文件

第六步:运行qmake命令(前提是你的qmake目录已经在环境变量PATH中)

命令如下:

qmake -project     //此时系统会自动将当前目录下的*.cpp和*.h文件包含到.pro的文件中,这个pro文件是以目录所在命名

//此时在这个目录中又多了一个文件,即为gotocell.pro

qmake gotocell.pro   //即在命令qmake后接上一个命令所生成的那个文件名,包括文件后缀.pro

//此时会在这个目录下生成debug和release两个目录,同时也会生成Makefile,Makefile.Debug和Makefile.Release,不过debug和release目录此时是空的

第七步:编译文件(使用nmake命令来编译),具体命令如下:

nmake

//此时会在此目录中多出两个文件,一个使ui_gotocelldialog.h文件(即自己所定义的gotocell.ui文件文件名(不包括文件后缀)前面加上一个ui_前缀),另一个

//文件是vc100.pdb文件(这个文件我不知道有什么用途)

//同时在第六步所生成的debug和release目录不再为空了,它们中间已经有东西存在了

第八步:运行程序

.//先进入此目录下的debug目录

cd debug

//在debug目录中已经有了一个.exe文件,这个文件的文件名是这个工程目录名,在自己这个例子中就是gotocell.exe

//开始运行程序,只要在dos的此工程的debug目录下直接输入这个文件名(包括文件后缀)就可以了

gotocell.exe

上面是自己在使用Qt Designer中可以运行得到最后结果的,由于Qt版本已经操作系统等不同的原因,上面的步骤不一定使用任何人

我只是将自己系统下生成步骤记下来,所以才有了此文章。

来自:http://blog.csdn.net/luyafei_89430/article/details/7994774

最后还是没有解决!!!2014年10月6日12:22:27

QT5.0.1在Windows下 出现QApplication:No such file or directory 问题的解决办法

上网查了一大通,基本都是Linux ubuntu等版本下的解决方案,如下csdn博客:http://blog.csdn.net/apple1985507/article/details/5435358;找了半天在这篇新浪博客找到了答案:
http://blog.sina.com.cn/s/blog_9da24f3b0101epan.html
解决方法是:在HelloWorld.pro工程项目文件中添加一行QT += widgets,然后再编译运行就OK了

我的pro文件改成这样

QT      
+=coregui

greaterThan(QT_MAJOR_VERSION,4):QT+=widgets

TARGET=HelloWorld

TEMPLATE=app

SOURCES+=\

main.cpp

QObject::connect的error: C1057: 宏扩展中遇到意外的文件结束

无解!!!!

2、用qcreator不能使用中文

1.首先把Qt Creator的编辑器设置为使用 UTF-8,下面是操作顺序:

工具-->选项-->文本编辑器-->行为,在右侧选项界面找到文件编码选项,设置为 UTF-8。

2.使用 QTextStream 时设置编码格式,你的代码修改如下:

QTextStream out(&file);

out.setCodec("utf-8");

QString str("物品名称");

3.用editplus打开相应的文件,然后另存为utf-8就可以了= =

3、moc_dialog.obj:-1:error: LNK2019: 无法解析的外部符号 "private: void __thiscall Dialog::showFile(void)"([email protected]@@AAEXXZ),该符号在函数"private: static void __cdecl Dialog::qt_static_metacall(class QObject*,enum QMetaObject::Call,int,void * *)"([email protected]@@[email protected]@[email protected]@@[email protected])
中被引用

答:其实这种错误时因为 函数filterDetection 在头文件中有定义,但在cpp 文件中没有实现,就是说原先定义了一个控件,但不想要了却没有删干净。

4、dialog.obj:-1:error: LNK2019: 无法解析的外部符号 "public: __thiscall InputDlg::InputDlg(class QWidget *)"([email protected]@[email protected]@@@Z),该符号在函数"private: void __thiscall Dialog::showInputDlg(void)"([email protected]@@AAEXXZ) 中被引用

答:连接不上,先把项目qmake一下就好了

5、QT对话框中show和exec的区别

QDialog的显示有两个函数show()和exec()。

exec():

显示一个模式对话框,并且锁住程序直到用户关闭该对话框为止。函数返回一个DialogCode结果。

在对话框弹出期间,用户不可以切换同程序下的其它窗口,直到该对话框被关闭。

http://www.cnblogs.com/hujianhua/archive/2012/06/24/2559761.html

?6、在学习QPalette的时候发现window背景色和Button的显示有问题,但是不报错

//显示背景颜色

voidPalette::ShowWindow()      //这个不知道为什么显示不出来!!!有的说是windows不支持,我也不太清楚2015年1月3日13:51:44

{

  QStringListcolorList=QColor::colorNames();   //得到所有的颜色序列

  QColorcolor=QColor(colorList[windowComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalettep=contentFrame->palette();   //得到右边的调色板

  p.setColor(QPalette::Window,color);   //修改相应位置的颜色

  contentFrame->setPalette(p);     //把调色板的值给应用上去

  contentFrame->update();   //刷新界面,得到显示

  /*

   *QStringListcolorList=QColor::colorNames();

    QColorcolor=QColor(colorList[cbbWindow->currentIndex()]);

    QPalettep=contentFrame->palette();

    p.setColor(QPalette::Window,color);

    contentFrame->setPalette(p);

   **/

}

//按钮背景颜色

voidPalette::ShowButton()  //这个不知道为什么显示不出来!!!有的说是windows不支持,我也不太清楚2015年1月3日13:51:44

{

  QStringListcolorList=QColor::colorNames();   //得到所有的颜色序列

  QColorcolor=QColor(colorList[buttonComboBox->currentIndex()]);   //取得当前选中的序号,得到颜色

  QPalettep=contentFrame->palette();   //得到右边的调色板

  p.setColor(QPalette::Button,color);   //修改相应位置的颜色

  contentFrame->setPalette(p);     //把调色板的值给应用上去

  contentFrame->update();

}

7、关于QVector!!!!!我已经被吓尿(自己理解有误)

inlineconstT&QVector<T>::at(inti)const

{Q_ASSERT_X(i>=0&&i<d->size,"QVector<T>::at","indexoutofrange");

returnd->begin()[i];}

答:浪费我N个小时,最后看了源码才知道,真他妈坑爹,这里at的指向的是迭代器指向的第1个对象的第[i]个!!!

那么QVector<QVector<int> > av;

在这个av里面的 av.at(i).at(j)代表的意思就是这个数组里面的第一个的第i个元素的第1个的第j个元素

比如:{{1,2, 3},{4,5, 6},{7,8,
9}}

那么i=2, j=1
代表的是8而不是3

8、注意第i行第j列翻译成坐标就是(j, i)

for(QVector<int>::size_typei=0;i!=HEIGHT;++i) 
//一行一行地画

{

for(QVector<QVector<int>>::size_typej=0;j!=WIDTH;++j)   
//一个点一个点来QVector<QVector<int>>::size_type

{

//选到相应的点,是1还是0

switch(map.at(i).at(j))

{

case0:    
//是空白

//           
qDebug()<<"0=>"<<i<<","<<j;

myPainter.setBrush(Qt::yellow);    
//设置画刷

//注意,这里坐标应该是反的,因为是i行第j列坐标就是(j,i)

myPainter.drawPixmap(i*25,j*25,QPixmap(":/images/ground.png"));

break;

case1:    
//是块砖

//           
qDebug()<<"1=>"<<i<<","<<j;

myPainter.setBrush(Qt::red);    
//设置画刷

//画出砖块图形

//注意,这里坐标应该是反的,因为是i行第j列坐标就是(j,i)

myPainter.drawPixmap(i*25,j*25,QPixmap(":/images/stone.png"));

break;

default:

qDebug()<<"idontknownwhathappen";     
//未知生物出现在地图

break;

}

}

}

答:这里面有两个注意记住改为下面这个:

9、运行程序之后出现异常错误QIODevice::read:device not open

答:???不知

时间: 2024-10-17 15:46:16

学习Qt的一些问题汇总的相关文章

学习Qt,Getting started

在界面的设计中,现在用的比较多的是Qt和WPF(C#),以前的MFC已出现衰老趋势.本人最近在学习Qt,觉得很有用,遂决定将学习历程记录下来,或许有感于后之来者,不亦乐哉. 一.Hello Qt #include "try_qt.h" #include <QtGui/QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QL

MySQL学习笔记—SQL服务器模式汇总

MySQL学习笔记-SQL服务器模式汇总 MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式.这样每个应用程序可以根据自己的需求来定制服务器的操作模式. 模式定义MySQL应支持哪些SQL语法,以及应执行哪种数据验证检查.这样可以更容易地在不同的环境中使用MySQL,并结合其它数据库服务器使用MySQL. 你可以用–sql-mode="modes"选项启动mysqld来设置默认SQL模式.如果你想要重设,该值还可以为空(–sql-mode ="&q

Qt入门学习——Qt 5 帮助文档的使用

Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法. 我们使用 Qt 帮助文档,主要分为这么几步: 1)类使用的相关介绍 2)查看所用部件(类)的相应成员函数(功能,参数,返回值) 3)查看部件的信号 4)查看部件的事件(所对应的虚函数如何编写) 1)类使用的相关介绍 光标移动到类名字的地方,接着按“F1”即可跳

Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系

通过<Qt Creator的使用>的学习,我们可以借助 Designer(界面设计器)快速设计界面. 此例子 ui 内容如下(只是简单添加了一个按钮): 工程的代码目录结构如下: 最终在工程所在目录会生成一个 ui 文件: 此 ui 文件实际上是xml 文件: 当我们编译 Qt 程序代码,Qt Creator 用 uic 工具把 ui 文件的内容转换成 C++ 代码,在工程目录同一级目录的 build- 目录下自动生成 ui_类名.h 文件,如本例子中的 ui_mywidget.h,是由 my

是否应该学习qt源码(碰到问题的时候,或者文档对函数描述不清楚的时候,可以看一下)

是否应该学习qt源码 如果你想调用某个函数,但是文档并没有清晰描述这个函数的功能的时候,你就需要去阅读源码,看看Qt究竟是怎么实现的.比如用QNetworkAccessManager发送一个QHttpMultiPart,QHttpMultiPart有个boundary属性,如果你设置了这个属性,发送出去的时候你会发现Qt自动在这个boundary的前后加了双引号,但是文档里面却没有提示.阅读源码,你可以看到注释里面是有的.http://www.qtcn.org/bbs/read-htm-tid-

开始学习QT

最近一直在用迅雷公司的迅雷Bolt写界面(有兴趣的可以了解下:http://bolt.xunlei.com/).不停的XML写布局.Lua写交互代码.C++写后台.没有现成的控件可以使用,最基本的一个Button都需要自己从头来定义. 好用是好用但不得不说有点心累.再说迅雷Bolt这个玩意还是有点小众吧,就能画画界面而已,用它的公司除了迅雷自己能有几家呢?对自己将来的工作也不会有特别大的帮助,一旦辞职很难再找到下一家 继续使用BOLT了吧.所以还是自己私底下学点新东西比较好吧. 最初公司决定使用

学习Android开发相关站点汇总

Google免FQ镜像汇总 stackoverflow Android基础&进阶 深入理解Android 老罗的Android之旅 Android 精彩案例 Android源码解读 Android开发学习笔记 Git教程 免费下载各种外文科技论文书籍电子版

关于OpenStack的学习路线及相关资源汇总

首先我们想学习openstack,那么openstack是什么?能干什么?涉及的初衷是什么?由什么来组成?刚接触openstack,说openstack不是一个软件,而是由多个组件进行组合,这是一个更深层次的理解,当我们看到dashboard的时候,我们或许对openstack感觉有一点感性认识了.dashboard可以理解为openstack与用户交流的一个窗口,而dashboard对于真正的使用者来讲,它的功能上面有一定的局限性.而对于初学者通过它,可能会对openstack有一定的了解.o

学习 慕课网 PHP工程师学习计划--我的笔记汇总

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 笔记汇总 入门必学  篇 web基础 htmlcss基础 (笔记已完成)