• 11125阅读
  • 3回复

用qt4.1.0 designer 设计界面的困惑 [复制链接]

上一主题 下一主题
离线chenxi1243
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-17
Qt4.1.0,designer产生.ui文件,然后用uic命令转化成.h文件,如果在desinger 中设定了signal and slot ,产生的头文件中会有QObject::connect(inputspinBox1, SIGNAL(valueChanged(QString)), outputWidget, SLOT(setText(QString)));
  QObject::connect(inputspinBox2, SIGNAL(valueChanged(QString)), outputWidget, SLOT(setText(QString)));但是这个函数又具有我所期望的函数功能,我怎么修改他??在就是我看到论坛上的关于qt4设计得例子,他的头文件中都有   private slots:
    void on_inputSpinBox1_valueChanged(int value);
    void on_inputSpinBox2_valueChanged(int value);

这个应该是自给写的头文件把!还有就是在qt4自己带得例子中,也是如下格式:
#ifndef CALCULATORFORM_H
  #define CALCULATORFORM_H

  #include "ui_calculatorform.h"

  class CalculatorForm : public QWidget
  {
    Q_OBJECT

  public:
    CalculatorForm(QWidget *parent = 0);

  private slots:
    void on_inputSpinBox1_valueChanged(int value);
    void on_inputSpinBox2_valueChanged(int value);

  private:
    Ui::CalculatorForm ui;
  };

  #endif
跟用uic命令产生的.h文件大相径庭,我感觉这是自己写的头文件,那么我就奇怪了?为什么大家不用比较好用的uic命令那??这样的话,用designer不就是只能画几个控件???用uic产生的头文件好像又不能更改,在什么地方加入singal产生后的处理函数那????是不是消息处理函数有固定格式如:
on_inputSpinBox2_valueChanged()中间是对象名,on_对象名_事件??qt4自己带的教程一开始就有所有的.h , .cpp , main.cpp, 等文件,根本摸不清产生顺序.有没有一步步讲解的教程,我刚接触qt觉得不是太好用,可能是用MFC用惯了,还请版主和各位高手指点!
[ 此贴被XChinux在2006-03-17 17:29重新编辑 ]
离线icevi

只看该作者 1楼 发表于: 2006-03-17
我的方法是用designer画界面,然后用UIC自动生成.ui文件,然后另写类来继承,如以下:
#ifndef PANELRFRAME_H
#define PANELFRAME_H

#include <QtCore>
#include <QtGui>
#include "ui_borderframe.h"   //这个是UIC生成的文件

class panelFrame: public QWidget,public Ui::borderFrame //UIC生成的UI文件中的类名
{
   Q_OBJECT
public :
   panelFrame(QWidget *parent = 0);
   ~panelFrame();
public slots:
private:
protected:
  void paintEvent(QPaintEvent *event);
};

#endif
我觉得这样还挺管用的,在.UI中已有的connect,你可以在自己的类中用disconnect断开连接.然后写自己的slots就可以了.在设计时也可以自己修改signal和slot的关系的.

我也才开始用QT,以前没有做过VC++的东西,用用觉得还可以的,找到方法后就觉得好用了.
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
离线chenxi1243

只看该作者 2楼 发表于: 2006-03-17
谢谢各位!听大家一讲明白多了.哈哈.
在线XChinux

只看该作者 3楼 发表于: 2006-03-17
on_inputSpinBox2_valueChanged()
被以这种方式声明的slot,系统会自动地把它和相应的部件、signal等进行连接,省得自己写了就。
到目前为止的Qt4 Designer(4.1.1)为止,它还不能自定义signal和slot,所以使用designer只能定义部件已有的signal和 slot,如果你要使用自己定义的slot那designer里的就不够用了,所以才在源码中加入上面的slot声明。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个