• 6290阅读
  • 9回复

用qt4 designer设计编码的方法问题 [复制链接]

上一主题 下一主题
离线ppdg
 
只看楼主 倒序阅读 楼主  发表于: 2009-03-09
书上讲的大多都是不是可视化直接编码的方法,但是我更喜欢这种用designer比较直观的方法。请问下,如果用这种方法一般是如何组织代码结构的。是在生成的ui_XX.h文件里直接修改,添加函数啥的么?那在类里声明完函数实现也放在这个.h文件里么?希望大家能给小弟点指点。
离线yanglisun
只看该作者 1楼 发表于: 2009-03-09
*.h里放的是函数和类的声名
*.cpp里是函数的实现

如果你将实现部分放到了*.h里,会造成在包含头文件的时候将实现不分包含进去,造成编译错误.

如果你在头文件里定义了变量,在编译的时候有可能造成重复声明变量..给你看个例子

1.h
int a;
int b;
int c;

1.cpp
#include "1.h"

int main()
{
    return 0;
}

经过编译器预处理后:1.cpp的结果如下

int a;
int b;
int c;

int main()
{
    return 0;
}
离线ppdg
只看该作者 2楼 发表于: 2009-03-09
= =!我的意思是,比如我如果改ui_XX.h文件的话,除非我一次把界面画好以后不动了,然后开始在系统生成的那个ui_xx.h文件里编码,一旦改界面后再一编译原来所有自己改的全部消失,自己加的函数也都没有了,全部变成系统自动生成的内容了。。
离线yanglisun
只看该作者 3楼 发表于: 2009-03-09
一般是做好一个界面以后,qmake以后会生成一个*.h的文件,里面是个类,然后再自己做一个类继承这个类,然后再进行编程..
只看该作者 4楼 发表于: 2009-03-09
qmake不会生成.h文件,但是会在makefile里写上哪些.ui文件需要生成.h
离线洞里的火
只看该作者 5楼 发表于: 2009-03-09
引用第2楼ppdg于2009-03-09 17:09发表的  :
= =!我的意思是,比如我如果改ui_XX.h文件的话,除非我一次把界面画好以后不动了,然后开始在系统生成的那个ui_xx.h文件里编码,一旦改界面后再一编译原来所有自己改的全部消失,自己加的函数也都没有了,全部变成系统自动生成的内容了。。

不应该修改ui_xxx.h
继承/包含这个类来扩展功能才对

个人倾向于包含,继承的话那么一堆public的Widget很让人不爽……
离线gangmae
只看该作者 6楼 发表于: 2009-03-09
添加变量或者函数什么的可以像MFC一样操作,一般同样文件会有2个,一个是ui下的(另一个在下面),要这2个文件一样,需要reload一次。这样就不会有错误了
离线foxyz

只看该作者 7楼 发表于: 2009-03-11
不要偷懒,建议看帮助.
简单流程如下:
1.使用designer设计你的*.ui
2.编辑你的*.pro 添加 FORMS += *.ui (把你设计的ui文件放这里)
3.编写你自己的类,一般使用继承或者组合。比如:你的*.ui产生的头文件是ui_XXX.h,你设计的widget名称为designWidget
你自己的类就要这么做:
    class myWidget : public QWidget, public Ui::designWidget
       {
                Q_OBJECT
                public:
                myWidget(QWidget* parents = 0) :QWidget(parent) {setupUi(this);}
               ....
       }
或者组合。
4.使用你的widget
myWidget* ww = new myWidget();
ww.show();
ww.exec();
离线浪漫天使
只看该作者 8楼 发表于: 2009-03-11
怎么都无视pro的啊。。。。
离线wd007

只看该作者 9楼 发表于: 2009-03-11
直接使用
单继承
多继承
动态添加
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
快速回复
限100 字节
 
上一个 下一个