2012-03-14 35 views
5

tôi có một cửa sổ đơn giản với một nút bỏ trong mã làm việc qt.The được hiển thị bên dướicách sử dụng tệp ui để tạo một tiện ích đơn giản?

#include <QApplication> 
#include <QDialog> 
#include <QPushButton> 

class MyWidget : public QWidget 
{ 
public: 
    MyWidget(QWidget *parent = 0); 
}; 

MyWidget::MyWidget(QWidget *parent) 
    : QWidget(parent) 
{ 
    setFixedSize(200, 120); 

    QPushButton *btquit = new QPushButton(tr("Quit"), this); 
    btquit->setGeometry(62, 40, 75, 30); 
    btquit->setFont(QFont("Times", 18, QFont::Bold)); 

    connect(btquit, SIGNAL(clicked()), qApp, SLOT(quit())); 
} 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    MyWidget widget; 
    widget.show(); 
    return app.exec(); 
} 

Bây giờ tôi muốn viết mã chương trình này sử dụng qt designer.I tạo ra một widget có tên là "MyWindow" và một nút bên trong tiện ích chính có tên "btquit" trong tệp ui sử dụng thiết kế qt. Làm thế nào để viết lại đoạn code trên với ui tên file.The file ui là mywindow.ui

Trả lời

3
#include <QApplication> 
#include <QDialog> 
#include <QPushButton> 
#include "ui_mywindow1.h" 

class MyWidget : public QWidget,private Ui::mywindow 
{ 
public: 
    MyWidget(QWidget *parent = 0); 
}; 

MyWidget::MyWidget(QWidget *parent) 
    : QWidget(parent) 
{ 
    setupUi(this); 


    connect(btquit, SIGNAL(clicked()), qApp, SLOT(quit())); 
} 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    MyWidget widget; 
    widget.show(); 
    return app.exec(); 
} 
2

Tôi thích có ui như thành viên tư nhân trong lớp của widget. Tôi cho rằng trong nhà thiết kế, bạn đã đặt tên cho tiện ích là mywindow (số objectName từ các thuộc tính).

// MyWindow.h 

#include <QWidget> 

// Forward declaration of your ui widget 
namespace Ui { 
    class mywindow; 
} 

class MyWidget : public QWidget 
{ 
public: 
    MyWidget(QWidget *parent = 0); 
    ~MyWidget(); 

private: 
    // private pointer to your ui 
    Ui::mywidget *ui; 
}; 

Và sau đó trong cpp của bạn, bạn phải làm như sau:

#include "mywindow.h" 
//1. Include the auto generated h file from uic 
#include "ui_mywindow.h" 
#include <QPushButton> 

MyWidget::MyWidget(QWidget *parent) 
    : QWidget(parent), 
     //2. initialize the ui 
     ui(new Ui::mywindow) 
{ 
    //3. Setup the ui 
    ui->setupUi(this); 

    // your code follows 
    setFixedSize(200, 120); 

    QPushButton *btquit = new QPushButton(tr("Quit"), this); 
    btquit->setGeometry(62, 40, 75, 30); 
    btquit->setFont(QFont("Times", 18, QFont::Bold)); 

    connect(btquit, SIGNAL(clicked()), qApp, SLOT(quit())); 
} 

MyWidget::~Mywidget() 
{ 
    delete ui; 
} 
+0

Cá nhân tôi thích cách này cũng vậy, mặc dù tôi khuyên bạn nên sử dụng một con trỏ chỉnh phạm vi hoặc con trỏ duy nhất cho giao diện người dùng, do đó nó được deallocated khi dụ class biến mất. –

+0

Hoặc xóa nó trong trình phá hủy ... Đã chỉnh sửa câu trả lời của tôi :) – pnezis

Các vấn đề liên quan