在Qt command prompt下学会使用ui文件

来源:互联网 发布:php大型网站如何维护 编辑:程序博客网 时间:2024/05/24 04:45

先看下效果:

http://blog.chinaunix.net/photo/116111_101004132436.jpg

第一步:

打开QT的Command Prompt,用uic把*.ui变成一个*.h文件。

uic -o ui_dialog.h dialog.ui

这时会根据你设计的ui文件,生成对应的代码:

ui_dialog.h 的代码

/*************************************
*******************************************
** Form generated from reading UI file 'dialog.ui'
**
** Created: Wed Jul 16 17:11:51 2008
**      by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_DIALOG_H
#define UI_DIALOG_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLCDNumber>
#include <QtGui/QProgressBar>
#include <QtGui/QSlider>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_Dialog
{
public:
    QWidget *widget;
    QHBoxLayout *horizontalLayout;
    QVBoxLayout *verticalLayout;
    QLCDNumber *lcdNumber;
    QSlider *horizontalSlider;
    QProgressBar *progressBar;
    QSlider *verticalSlider;
    void setupUi(QDialog *Dialog)
    {
        if (Dialog->objectName().isEmpty())
            Dialog->setObjectName(QString::fromUtf8("Dialog"));
        Dialog->resize(531, 378);
        Dialog->setMaximumSize(QSize(16777215, 55555));
        widget = new QWidget(Dialog);
        widget->setObjectName(QString::fromUtf8("widget"));
        widget->setGeometry(QRect(100, 80, 301, 201));
        horizontalLayout = new QHBoxLayout(widget);
        horizontalLayout->setSpacing(6);
        horizontalLayout->setContentsMargins(11, 11, 11, 11);
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
        horizontalLayout->setContentsMargins(0, 0, 0, 0);
        verticalLayout = new QVBoxLayout();
        verticalLayout->setSpacing(6);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        lcdNumber = new QLCDNumber(widget);
        lcdNumber->setObjectName(QString::fromUtf8("lcdNumber"));
        lcdNumber->setEnabled(true);
        lcdNumber->setMaximumSize(QSize(200, 200));
        verticalLayout->addWidget(lcdNumber);
        horizontalSlider = new QSlider(widget);
        horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider"));
        horizontalSlider->setMaximum(100);
        horizontalSlider->setOrientation(Qt::Horizontal);
        verticalLayout->addWidget(horizontalSlider);
        progressBar = new QProgressBar(widget);
        progressBar->setObjectName(QString::fromUtf8("progressBar"));
        progressBar->setMaximumSize(QSize(200, 20));
        progressBar->setValue(0);
        verticalLayout->addWidget(progressBar);

        horizontalLayout->addLayout(verticalLayout);
        verticalSlider = new QSlider(widget);
        verticalSlider->setObjectName(QString::fromUtf8("verticalSlider"));
        verticalSlider->setEnabled(true);
        verticalSlider->setMaximumSize(QSize(200, 300));
        verticalSlider->setMaximum(100);
        verticalSlider->setOrientation(Qt::Vertical);
        horizontalLayout->addWidget(verticalSlider);

        retranslateUi(Dialog);
        QObject::connect(verticalSlider, SIGNAL(valueChanged(int)), lcdNumber, SLOT(display(int)));
        QObject::connect(verticalSlider, SIGNAL(valueChanged(int)), horizontalSlider, SLOT(setValue(int)));
        QObject::connect(verticalSlider, SIGNAL(valueChanged(int)), progressBar, SLOT(setValue(int)));
        QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), verticalSlider, SLOT(setValue(int)));
        QMetaObject::connectSlotsByName(Dialog);
    } // setupUi
    void retranslateUi(QDialog *Dialog)
    {
        Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
    } // retranslateUi
};
namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_DIALOG_H
 
第二步:
现在该使用ui_dialog.h文件,我们在dialog.h文件中使用
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
    class Dialog;
}
class Dialog : public QDialog {
    Q_OBJECT
public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
protected:
    void changeEvent(QEvent *e);
private:
 
 //使用ui_dialog.h 中定义的Ui_Dialog
    Ui::Dialog *ui; 
private slots:
    void on_verticalSlider_valueChanged(int value);
};
#endif // DIALOG_H

第三步实现dialog.h中定义的class Dialog 类,即实现

dialog.cpp文件

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::changeEvent(QEvent *e)
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void Dialog::on_verticalSlider_valueChanged(int value)
{

}

第四步:实现main程序:

#include <QtGui/QApplication>
#include "dialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();
    return a.exec();
}
第五步:运行命令后再进入debug目录运行程序

 

文件:signal2.zip
大小:242KB
下载:下载

 

 

原创粉丝点击