• 15454阅读
  • 27回复

【提问】如何修改自动生成的H文件??? [复制链接]

上一主题 下一主题
离线liliwang55
 

只看楼主 倒序阅读 楼主  发表于: 2005-07-29
#ifndef UNTITLED_H
#define UNTITLED_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>

class Ui_MainWindow
{
public:
QWidget *centralWidget;
QGridLayout *gridLayout;
QPushButton *pushButton_2;
QLineEdit *lineEdit;
QPushButton *pushButton;
QListWidget *listWidget;

void setupUi(QMainWindow *MainWindow)
{
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(QSize(218, 294).expandedTo(MainWindow->minimumSizeHint()));
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
gridLayout = new QGridLayout(centralWidget);
gridLayout->setSpacing(6);
gridLayout->setMargin(8);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
pushButton_2 = new QPushButton(centralWidget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));

gridLayout->addWidget(pushButton_2, 2, 1, 1, 1);

lineEdit = new QLineEdit(centralWidget);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

gridLayout->addWidget(lineEdit, 1, 0, 1, 2);

pushButton = new QPushButton(centralWidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));

gridLayout->addWidget(pushButton, 2, 0, 1, 1);

listWidget = new QListWidget(centralWidget);
listWidget->setObjectName(QString::fromUtf8("listWidget"));

gridLayout->addWidget(listWidget, 0, 0, 1, 2);

MainWindow->setCentralWidget(centralWidget);
retranslateUi(MainWindow);

QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow"));
pushButton_2->setText(QApplication::translate("MainWindow", "PushButton"));
pushButton->setText(QApplication::translate("MainWindow", "PushButton"));
Q_UNUSED(MainWindow);
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

#endif // UNTITLED_H

看过斑竹的<<学习QT4初步编程>>一贴,深有感触.但斑竹在FORM.H和FORM.CPP上并是在自动生成的.H文件上进行的修改,我个人认为,这比较不方便.如果,要实现斑竹在<<学习QT4初步编程>>中所实现的程序但只在自动生成的.H文件上修改,应该如何进行呢?
我做了如下修改,但不成功,还望高人指点:
#ifndef TEST_H
#define TEST_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>

class Ui_MainWindow
{
public:
  QWidget *centralWidget;
    QWidget *widWarning;
  QWidget *widget;
  QWidget *widget1;
  QWidget *widget2;
  QWidget *widget3;
  QVBoxLayout *vboxLayout;
  QHBoxLayout *hboxLayout;
  QLineEdit *lineEdit;
  QPushButton *pushButton;
  QListWidget *listWidget;
  QHBoxLayout *hboxLayout1;
  QSpacerItem *spacerItem;
  QPushButton *pushButton_2;
  QSpacerItem *spacerItem1;

  void setupUi(QMainWindow *MainWindow)
  {
  MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
  MainWindow->resize(QSize(402, 334).expandedTo(MainWindow->minimumSizeHint()));
  centralWidget = new QWidget(MainWindow);
  centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
  widget = new QWidget(centralWidget);
  widget->setObjectName(QString::fromUtf8("widget"));
  widget->setGeometry(QRect(70, 30, 258, 254));
  widget1 = new QWidget(centralWidget);
  widget1->setObjectName(QString::fromUtf8("widget1"));
  widget1->setGeometry(QRect(70, 10, 258, 306));
  widget2 = new QWidget(centralWidget);
  widget2->setObjectName(QString::fromUtf8("widget2"));
  widget2->setGeometry(QRect(71, 11, 258, 256));
  widget3 = new QWidget(centralWidget);
  widget3->setObjectName(QString::fromUtf8("widget3"));
  widget3->setGeometry(QRect(70, 20, 258, 256));
  vboxLayout = new QVBoxLayout(widget3);
  vboxLayout->setSpacing(6);
  vboxLayout->setMargin(0);
  vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
  hboxLayout = new QHBoxLayout();
  hboxLayout->setSpacing(6);
  hboxLayout->setMargin(0);
  hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
  lineEdit = new QLineEdit(widget3);
  lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

  hboxLayout->addWidget(lineEdit);

  pushButton = new QPushButton(widget3);
  pushButton->setObjectName(QString::fromUtf8("pushButton"));

  hboxLayout->addWidget(pushButton);


  vboxLayout->addLayout(hboxLayout);

  listWidget = new QListWidget(widget3);
  listWidget->setObjectName(QString::fromUtf8("listWidget"));

  vboxLayout->addWidget(listWidget);

  hboxLayout1 = new QHBoxLayout();
  hboxLayout1->setSpacing(6);
  hboxLayout1->setMargin(0);
  hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1"));
  spacerItem = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

  hboxLayout1->addItem(spacerItem);

  pushButton_2 = new QPushButton(widget3);
  pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));

  hboxLayout1->addWidget(pushButton_2);

  spacerItem1 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

  hboxLayout1->addItem(spacerItem1);


  vboxLayout->addLayout(hboxLayout1);

  MainWindow->setCentralWidget(centralWidget);
  retranslateUi(MainWindow);
 

  QMetaObject::connectSlotsByName(MainWindow);
  } // setupUi

  void retranslateUi(QMainWindow *MainWindow)
  {
  MainWindow->setWindowTitle(QApplication::translate("MainWindow", "test program"));
  pushButton->setText(QApplication::translate("MainWindow", "insert"));
  pushButton_2->setText(QApplication::translate("MainWindow", "close"));
  Q_UNUSED(MainWindow);
  } // retranslateUi

};

namespace Ui {
  class MainWindow: public Ui_MainWindow
    {
    public:
        MainWindow()
        {
              QObject::connect(pushButton_2, SIGNAL(clicked()), MainWindow, SLOT(close()));
              QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(insertItem()));
        }
    public slots:
        void insertItem()
        {
              QString strInsert = lineEdit->text();
              if(strInsert.isEmpty())
              {
                  QMessageBox::warning(widWarning, QObject::tr("ALERT"),
                  QObject::tr("enter words in line"),
                  QObject::tr("ok"));
                  lineEdit->setFocus();
              }
              else
              {
                  listWidget->addItem(lineEdit->text());
                  lineEdit->clear();
              }
        }
    };
} // namespace Ui




#endif // TEST_H
[ 此贴被XChinux在2005-08-02 09:11重新编辑 ]
离线liliwang55

只看该作者 1楼 发表于: 2005-07-29
看过斑竹的<<学习QT4初步编程>>一贴,深有感触.但斑竹在FORM.H和FORM.CPP上并不是在自动生成的.H文件上进行的修改,我个人认为,这比较不方便.如果,要实现斑竹在<<学习QT4初步编程>>中所实现的程序但只在自动生成的.H文件上修改,应该如何进行呢?
我做了如下修改,但不成功,还望高人指点:
离线XChinux

只看该作者 2楼 发表于: 2005-07-29
其實呢,在我寫〈學習QT4初步編程〉的時候,我還沒有詳細看過QT Designer的用法,因為以前在Linux下使用QT3.X的時候,QT Designer裡面可以寫代碼的,所以許多事情比較方便。但在試用QT4在Windows下面的時候,發現OpenSource版衹有界面設計功能,其它的就沒了,所以我就在寫文章的時候仍沿用傳統的代碼方式做。這個確實比較麻煩。不過,我認為,能夠用純代碼進行界面設計是必要的,QT Designer衹是為了能加快界面開發。QT4現在的界面開發模式,比較的好,我也推薦這種模式。
  至於對.H文件的修改,如果你知道怎樣用純代碼寫界面,那麼把它修改成你需要的樣子,是不成問題的。
另,QT中文論壇已開通,你可以到那裡去討論這方面的問題。不推薦在這裡討論,主要是,這個論壇是在我自己的開發機器上建立的,不是服務器,不是永久的,很不方便。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 3楼 发表于: 2005-07-29
請注意QT Designer生成的代碼。
由於OpenSource for Windows版裡的QT Designer不能進行代碼編輯功能,所以
還是推薦使用QT文檔裡例子中給出的方式來使用QT Designer。
即: 在自己定義的類裡加一個Qt Designer裡生成的類的成員,並SetupUi()安裝它,所有在Designer裡設計不到的部分,在自定義類裡進行處理。

你可以看看QT Assistant裡的關於QT Designer的用法的那部分幫助。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liliwang55

只看该作者 4楼 发表于: 2005-07-29
非常感谢斑竹的回复~~~~

不过,我更加喜欢这个论坛的漂亮,虽然是斑竹自己建的有不稳定的可能,但我还是非常的支持~~
离线XChinux

只看该作者 5楼 发表于: 2005-07-29
谢谢,呵呵。在控制面板里你可以更改风格,试验一下其它几种方格。
其实PHPWind(本论坛所使用的程序)的默认风格是很丑的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liliwang55

只看该作者 6楼 发表于: 2005-07-29
請注意QT Designer生成的代碼。
由於OpenSource for Windows版裡的QT Designer不能進行代碼編輯功能,所以
還是推薦使用QT文檔裡例子中給出的方式來使用QT Designer。
即: 在自己定義的類裡加一個Qt Designer裡生成的類的成員,並SetupUi()安裝它,所有在Designer裡設計不到的部分,在自定義類裡進行處理。

你可以看看QT Assistant裡的關於QT Designer的用法的那部分幫助。

=============================================================

能不能请斑竹辛苦下来写个范例??
离线XChinux

只看该作者 7楼 发表于: 2005-07-29
代码如下:

untitled.ui
<ui version="4.0" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>Form</class>
<widget class="QWidget" name="Form" >
<property name="geometry" >
  <rect>
  <x>0</x>
  <y>0</y>
  <width>399</width>
  <height>312</height>
  </rect>
</property>
<property name="windowTitle" >
  <string>Form</string>
</property>
<layout class="QGridLayout" >
  <property name="margin" >
  <number>8</number>
  </property>
  <property name="spacing" >
  <number>6</number>
  </property>
  <item row="0" column="0" >
  <widget class="QListWidget" name="listWidget" />
  </item>
  <item row="2" column="0" >
  <layout class="QHBoxLayout" >
  <property name="margin" >
    <number>0</number>
  </property>
  <property name="spacing" >
    <number>6</number>
  </property>
  <item>
    <widget class="QPushButton" name="pushButton" >
    <property name="text" >
    <string>Insert</string>
    </property>
    </widget>
  </item>
  <item>
    <spacer>
    <property name="orientation" >
    <enum>Qt::Horizontal</enum>
    </property>
    <property name="sizeHint" >
    <size>
      <width>121</width>
      <height>20</height>
    </size>
    </property>
    </spacer>
  </item>
  <item>
    <widget class="QPushButton" name="pushButton_3" >
    <property name="text" >
    <string>Close</string>
    </property>
    </widget>
  </item>
  </layout>
  </item>
  <item row="1" column="0" >
  <widget class="QLineEdit" name="lineEdit" />
  </item>
</layout>
<widget class="QWidget" name="" >
  <property name="geometry" >
  <rect>
  <x>10</x>
  <y>10</y>
  <width>411</width>
  <height>291</height>
  </rect>
  </property>
</widget>
<widget class="QWidget" name="" >
  <property name="geometry" >
  <rect>
  <x>9</x>
  <y>9</y>
  <width>401</width>
  <height>297</height>
  </rect>
  </property>
</widget>
</widget>
<pixmapfunction></pixmapfunction>
<resources/>
<connections>
<connection>
  <sender>pushButton_3</sender>
  <signal>clicked()</signal>
  <receiver>Form</receiver>
  <slot>close()</slot>
  <hints>
  <hint type="sourcelabel" >
  <x>349</x>
  <y>291</y>
  </hint>
  <hint type="destinationlabel" >
  <x>314</x>
  <y>311</y>
  </hint>
  </hints>
</connection>
</connections>
</ui>


ui_untitled.h
#ifndef UI_UNTITLED_H
#define UI_UNTITLED_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QListWidget>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QWidget>

class Ui_Form
{
public:
  QWidget *widget;
  QWidget *widget1;
  QGridLayout *gridLayout;
  QListWidget *listWidget;
  QHBoxLayout *hboxLayout;
  QPushButton *pushButton;
  QSpacerItem *spacerItem;
  QPushButton *pushButton_3;
  QLineEdit *lineEdit;

  void setupUi(QWidget *Form)
  {
  Form->setObjectName(QString::fromUtf8("Form"));
  Form->resize(QSize(399, 312).expandedTo(Form->minimumSizeHint()));
  widget = new QWidget(Form);
  widget->setObjectName(QString::fromUtf8("widget"));
  widget->setGeometry(QRect(10, 10, 411, 291));
  widget1 = new QWidget(Form);
  widget1->setObjectName(QString::fromUtf8("widget1"));
  widget1->setGeometry(QRect(9, 9, 401, 297));
  gridLayout = new QGridLayout(Form);
  gridLayout->setSpacing(6);
  gridLayout->setMargin(8);
  gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
  listWidget = new QListWidget(Form);
  listWidget->setObjectName(QString::fromUtf8("listWidget"));

  gridLayout->addWidget(listWidget, 0, 0, 1, 1);

  hboxLayout = new QHBoxLayout();
  hboxLayout->setSpacing(6);
  hboxLayout->setMargin(0);
  hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
  pushButton = new QPushButton(Form);
  pushButton->setObjectName(QString::fromUtf8("pushButton"));

  hboxLayout->addWidget(pushButton);

  spacerItem = new QSpacerItem(121, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

  hboxLayout->addItem(spacerItem);

  pushButton_3 = new QPushButton(Form);
  pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));

  hboxLayout->addWidget(pushButton_3);


  gridLayout->addLayout(hboxLayout, 2, 0, 1, 1);

  lineEdit = new QLineEdit(Form);
  lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

  gridLayout->addWidget(lineEdit, 1, 0, 1, 1);

  retranslateUi(Form);
  QObject::connect(pushButton_3, SIGNAL(clicked()), Form, SLOT(close()));

  QMetaObject::connectSlotsByName(Form);
  } // setupUi

  void retranslateUi(QWidget *Form)
  {
  Form->setWindowTitle(QApplication::translate("Form", "Form"));
  pushButton->setText(QApplication::translate("Form", "Insert"));
  pushButton_3->setText(QApplication::translate("Form", "Close"));
  Q_UNUSED(Form);
  } // retranslateUi

};

namespace Ui {
  class Form: public Ui_Form {};
} // namespace Ui

#endif // UI_UNTITLED_H



main.cpp
#include <QApplication>
#include "dlg.h"

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    MyDlg *mydlg= new MyDlg;
    return mydlg->exec();
}    


dlg.h
#ifndef DLG_H
#define DLG_H

#include <QDialog>
#include "ui_untitled.h"

class MyDlg: public QDialog
{
Q_OBJECT
public:
    MyDlg();
private slots:
    void InsertSlot();
private:
    Ui::Form ui;
};

#endif




dlg.cpp
#include "dlg.h"
#include <QMessageBox>
#include <QString>
MyDlg::MyDlg()
{
    ui.setupUi(this);
    QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(InsertSlot()));
}

void MyDlg::InsertSlot()
{
    QString strInsert = ui.lineEdit->text();
    if (strInsert.isEmpty())
    {
        QMessageBox::warning(this, tr("Alert"),
                  tr("You have not input any character"),
                  tr("OK"));
        ui.lineEdit->setFocus();
    }
    else
    {
        ui.listWidget->addItem(strInsert);
        ui.lineEdit->clear();
    }
}


原始文件为:untitled.ui, main.cpp, dlg.h, dlg.cpp
运行下面命令:
qmake -project
qmake
make
附件: example.rar (2 K) 下载次数:80
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 8楼 发表于: 2005-07-29
着重注意上面的dlg.cpp、dlg.h文件。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 9楼 发表于: 2005-08-18
版大 能解释下 "Ui::Form ui;"(在dlg.h里) 和
namespace Ui {
class Form: public Ui_Form {};
} // namespace Ui
(在ui_untitled.h里)吗??
有点不清楚................................谢谢.
[ 此贴被血魔在2005-08-18 16:58重新编辑 ]
离线XChinux

只看该作者 10楼 发表于: 2005-08-18
是一样的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 11楼 发表于: 2005-08-18
不好意思 我是不晓得他们的意思 不是区别 心虚~~~~~~
Ui::form ui 是什么类型的 ?
离线XChinux

只看该作者 12楼 发表于: 2005-08-18
Ui,是名字空间,Form,是类名。
ui就是Ui名字空间中的Form类的一个实例
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 13楼 发表于: 2005-08-18
明白呵 谢谢拉!!!!!!!!!!!!等下回去拉用你这个作品去整个小东东 哈啊哈 :)
离线血魔
只看该作者 14楼 发表于: 2005-08-19
版主老大 好象不用把MainWindow改成Form也可以执行.....就是要把QMainWindow改成Qwidget(有2处)是把.............................. :)
离线XChinux

只看该作者 15楼 发表于: 2005-08-19
......,
那要你看你在QT Designer里是选用的哪个了,是选的 MainWindow式?还是选择Dialog式?还是选择Widge式。

不同的选择,生成的代码的类名不一样。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 16楼 发表于: 2005-08-19
哦 知道了 在问下 我每次都要删除MainWindow->setCentralWidget(centralWidget);这句
因为它说 QWidget 下没有这个子类 现在是没事~~~~~以后编大点的东东不会有问题把?
老大 问下QWidget 是不是最基本的类 可以狂继承??
离线XChinux

只看该作者 17楼 发表于: 2005-08-19
QObject与QWidget,呵呵,QWidget是可视化的最基本的类,
QObject是大多数QT类的基类,
看看QT Assistant就知道了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 18楼 发表于: 2005-08-19
版大 .H文件qmake时会自动生成是把.
只要在main()里边include与.ui同名的.h... :)
离线XChinux

只看该作者 19楼 发表于: 2005-08-19
对,不是同名,名字前要加"ui_“,后要加.h
.h是安make的时候生成的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线血魔
只看该作者 20楼 发表于: 2005-08-19
哈哈~~~刚才发现以前好傻(虽然现在也不怎么样哈)
老喜欢在QMainWindow 上designer东东......结果ui文件不能直接用哈! 晕死拉
在Widget上建的直接就可以用ui不带改的............
[ 此贴被血魔在2005-08-19 19:09重新编辑 ]
离线giscn
只看该作者 21楼 发表于: 2005-08-23
下面是引用血魔于2005-08-18 16:52发表的:
版大 能解释下 "Ui::Form ui;"(在dlg.h里) 和
namespace Ui {
class Form: public Ui_Form {};
} // namespace Ui
(在ui_untitled.h里)吗??
.......


只不是将 Ui_Form 这样别扭的名字,换成你自己取的 Form 这个名字(这个名字是你在designer里设定的),为了好记,你当然可以在这里 进行自定义,但不推荐,因为如果当你修改了designer里的form后,重新编译,这里的修改就丢失了。
http://nzt.spaces.live.com
离线XChinux

只看该作者 22楼 发表于: 2005-08-23
楼上正解
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线weilong122

只看该作者 23楼 发表于: 2006-04-21
<ui version="4.0" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>Form</class>
<widget class="QWidget" name="Form" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>399</width>
<height>312</height>
</rect>
</property>
<property name="windowTitle" >
<string>Form</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
<number>8</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item row="0" column="0" >
<widget class="QListWidget" name="listWidget" />
</item>
<item row="2" column="0" >
<layout class="QHBoxLayout" >
<property name="margin" >
  <number>0</number>
</property>
<property name="spacing" >
  <number>6</number>
</property>
<item>
  <widget class="QPushButton" name="pushButton" >
  <property name="text" >
  <string>Insert</string>
  </property>
  </widget>
</item>
<item>
  <spacer>
  <property name="orientation" >
  <enum>Qt::Horizontal</enum>
  </property>
  <property name="sizeHint" >
  <size>
    <width>121</width>
    <height>20</height>
  </size>
  </property>
  </spacer>
</item>
<item>
  <widget class="QPushButton" name="pushButton_3" >
  <property name="text" >
  <string>Close</string>
  </property>
  </widget>
</item>
</layout>
</item>
<item row="1" column="0" >
<widget class="QLineEdit" name="lineEdit" />
</item>
</layout>
<widget class="QWidget" name="" >
<property name="geometry" >
<rect>
<x>10</x>
<y>10</y>
<width>411</width>
<height>291</height>
</rect>
</property>
</widget>
<widget class="QWidget" name="" >
<property name="geometry" >
<rect>
<x>9</x>
<y>9</y>
<width>401</width>
<height>297</height>
</rect>
</property>
</widget>
</widget>
<pixmapfunction></pixmapfunction>
<resources/>
<connections>
<connection>
<sender>pushButton_3</sender>
<signal>clicked()</signal>
<receiver>Form</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel" >
<x>349</x>
<y>291</y>
</hint>
<hint type="destinationlabel" >
<x>314</x>
<y>311</y>
</hint>
</hints>
</connection>
</connections>
</ui>

========================================================

总版主
这个代码怎么生成的
看不懂
离线XChinux

只看该作者 24楼 发表于: 2006-04-21
这是用designer设计的.ui文件(xml格式的)
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jollyjia

只看该作者 25楼 发表于: 2006-05-10
#include "form.h"
#include <QtGui/QtGui>

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

   Form *form=new Form;
   form->show();
   return app.exec();
   
}



#ifndef FORM_H
#define FORM_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QComboBox>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>
#include <QtGui/QMainWindow>
#include <QDebug>

class Form:public QMainWindow
{
Q_OBJECT
public:
  Form();
  void retranslateUi();
public slots:
  void compute();
public:
   QWidget *widget;
   QHBoxLayout *hboxLayout;
   QLineEdit *lineEdit_a;
   QComboBox *comboBox;
   QLineEdit *lineEdit_b;
   QLabel *label_eauql;
   QLineEdit *lineEdit_c;
   QWidget *layoutWidget;
   QHBoxLayout *hboxLayout1;
   QPushButton *pushButton_ok;
   QPushButton *pushButton_close;
   QLabel *label_compute;
};
#endif // FORM_H


#include "form.h"

Form::Form()
{
   this->setObjectName(QString::fromUtf8("Form"));
   this->resize(QSize(370, 139).expandedTo(this->minimumSizeHint()));
   widget = new QWidget(this);
   widget->setObjectName(QString::fromUtf8("widget"));
   widget->setGeometry(QRect(10, 50, 351, 26));
   hboxLayout = new QHBoxLayout(widget);
   hboxLayout->setSpacing(6);
   hboxLayout->setMargin(0);
   hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
   lineEdit_a = new QLineEdit(widget);
   lineEdit_a->setObjectName(QString::fromUtf8("lineEdit_a"));

   hboxLayout->addWidget(lineEdit_a);

   comboBox = new QComboBox(widget);
   comboBox->setObjectName(QString::fromUtf8("comboBox"));

   hboxLayout->addWidget(comboBox);
   lineEdit_b = new QLineEdit(widget);
   lineEdit_b->setObjectName(QString::fromUtf8("lineEdit_b"));

   hboxLayout->addWidget(lineEdit_b);

   label_eauql = new QLabel(widget);
   label_eauql->setObjectName(QString::fromUtf8("label_eauql"));

   hboxLayout->addWidget(label_eauql);

   lineEdit_c = new QLineEdit(widget);
   lineEdit_c->setObjectName(QString::fromUtf8("lineEdit_c"));

   hboxLayout->addWidget(lineEdit_c);

   layoutWidget = new QWidget(this);
   layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
   layoutWidget->setGeometry(QRect(100, 100, 182, 30));
   hboxLayout1 = new QHBoxLayout(layoutWidget);
   hboxLayout1->setSpacing(6);
   hboxLayout1->setMargin(0);
   hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1"));
   pushButton_ok = new QPushButton(layoutWidget);
   pushButton_ok->setObjectName(QString::fromUtf8("pushButton_ok"));

   hboxLayout1->addWidget(pushButton_ok);

   pushButton_close = new QPushButton(layoutWidget);
   pushButton_close->setObjectName(QString::fromUtf8("pushButton_close"));

   hboxLayout1->addWidget(pushButton_close);

   label_compute = new QLabel(this);
   label_compute->setObjectName(QString::fromUtf8("label_compute"));
   label_compute->setGeometry(QRect(10, 20, 71, 16));
   retranslateUi();
   QObject::connect(pushButton_close, SIGNAL(clicked()), this, SLOT(close()));
   QObject::connect(pushButton_ok, SIGNAL(clicked()), this, SLOT(compute()));

   QMetaObject::connectSlotsByName(this);

} // setupUi

void Form::retranslateUi()
{
   this->setWindowTitle(QApplication::translate("Form", "Calculator", 0, QApplication::UnicodeUTF8));
   lineEdit_a->setText(QApplication::translate("Form", "0", 0, QApplication::UnicodeUTF8));
   comboBox->clear();
   comboBox->addItem(QApplication::translate("Form", "+", 0, QApplication::UnicodeUTF8));
   comboBox->addItem(QApplication::translate("Form", "-", 0, QApplication::UnicodeUTF8));
   comboBox->addItem(QApplication::translate("Form", "*", 0, QApplication::UnicodeUTF8));
   comboBox->addItem(QApplication::translate("Form", "/", 0, QApplication::UnicodeUTF8));
   lineEdit_b->setText(QApplication::translate("Form", "0", 0, QApplication::UnicodeUTF8));
   label_eauql->setText(QApplication::translate("Form", "\357\274\235", 0, QApplication::UnicodeUTF8));
   lineEdit_c->setText(QApplication::translate("Form", "0", 0, QApplication::UnicodeUTF8));
   pushButton_ok->setText(QApplication::translate("Form", "Ok", 0, QApplication::UnicodeUTF8));
   pushButton_close->setText(QApplication::translate("Form", "Close", 0, QApplication::UnicodeUTF8));
   label_compute->setText(QApplication::translate("Form", "Compute:", 0, QApplication::UnicodeUTF8));
   Q_UNUSED(this);
} // retranslateUi


void Form::compute()
{
   QString str;
   str=lineEdit_a->text();
   qDebug()<<str;
}


这就是我通过修改DESIGNER生成的代码改过来的,这样就很方便添加自己的SLOTS了。
离线四个硬币
只看该作者 26楼 发表于: 2009-09-29
引用第7楼XChinux于2005-07-29 17:17发表的  :
代码如下:
untitled.ui



请问一下版主,在自己定义的类中,是继承.ui文件生成的类好呢 还是把.ui生成的类的对象作为自己的子对象好呢?哪个效率更高?
离线四个硬币
只看该作者 27楼 发表于: 2009-09-29
引用第15楼XChinux于2005-08-19 10:18发表的  :
......,
那要你看你在QT Designer里是选用的哪个了,是选的 MainWindow式?还是选择Dialog式?还是选择Widge式。
不同的选择,生成的代码的类名不一样。



版主啊,这三个选择的主要区别是什么呀??谢谢哈
快速回复
限100 字节
 
上一个 下一个