2011-09-18 13 views
5

Tôi có một dự án thủy quân lục chiến và tôi có cấu trúc tệp sau.Cách hiển thị tiện ích bên trong cửa sổ chính

marines.pro

HÌNH THỨC

iran.ui marines.h

Headers

iran.h marines.h

Nguồn

iran. cpp main.cpp marines.cpp

Tôi đã thêm iran tiện ích vào trong các thủy quân lục chiến dự án.

Đây là marines.cpp

#include <QtGui> 
#include "marines.h" 
#include "iran.h" 


marines::marines(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::marines) 
{ 
    ui->setupUi(this); 
    connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close())); 
    connect(ui->actionIran, SIGNAL(triggered()), this, SLOT(ir())); 
} 

void marines::ir() 
{ 
//slot to display iran ui inside my main window 
} 

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

và đây là iran.cpp tôi

#include "iran.h" 
#include <QtGui> 

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

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

Làm thế nào tôi có thể hiển thị widget iran tôi thực hiện trong thiết kế qt ?.

Trả lời

12

Tất cả phụ thuộc vào cách bạn muốn tiện ích hiển thị.

  1. bạn có thể thêm một bố trí vào công cụ trung tâm của bạn trong MainWindow của bạn và thêm widget tùy chỉnh của bạn để bố trí
  2. nếu bạn muốn widget tùy chỉnh của bạn sẽ được centralWidget của MainWindow sau đó sử dụng setCentralWidget
  3. Nếu bạn muốn tiện ích tùy chỉnh dưới dạng subWindow, sau đó thêm MdiArea vào MainWindow của bạn. Sau đó, thêm widget tùy chỉnh cho bạn MdiArea.
  4. Nếu bạn chỉ muốn widget tùy chỉnh được hiển thị như một cửa sổ sau đó chỉ cần "widget.show()"

của nó tốt hơn để nhìn vào Qt's examples to understand how a MainWindow is used.

+0

Cám ơn các tùy chọn. Bạn có thể giải thích một số tùy chọn khác 4. – Gandalf

+0

tốt, trong hàm tạo của thủy quân lục chiến gọi iran-> show() như andrei được đề xuất hoặc trong hàm tạo iran bạn chỉ có thể gọi show() hoặc bất cứ nơi nào bạn tạo đối tượng iran call show() trên nó – blueskin

+0

nếu tôi có thể thêm, tôi tin rằng tùy chọn 4 sẽ yêu cầu * parent = 0 trong hàm khởi tạo (có nghĩa là nó không phải là con của bất kỳ tiện ích con nào khác và sẽ được tạo dưới dạng cửa sổ) – Rachael

2
marines::marines(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::marines) 
{ 
    ui->setupUi(this); // after this 
    iran *ir = new iran(); // create variable ir 
    ir->show(); // show window 
    ... 
} 
+0

Tôi đã sử dụng QStackedWidget. – Gandalf

+0

Điều này cho thấy nó như là một cửa sổ riêng biệt, hoặc giải pháp (4) từ câu trả lời của blueskin. – TimZaman