2013-08-01 21 views
8

Ich bin neu in qt Programmierung, also bitte nicht stört es, wenn Sie es eine noob Frage finden. Ich habe eine Schaltfläche zu meinem Hauptfenster hinzugefügt, aber wenn ich den Code ausführe, wird die Schaltfläche nicht angezeigt. Hier ist mein Code:Wie fügt man Schaltflächen zu einem Hauptfenster in Qt hinzu?

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QtWidgets> 

MainWindow::MainWindow(QWidget *parent) 
{ 
QPushButton *train_button = new QPushButton(this); 
train_button->setText(tr("something")); 
train_button->move(600, 600); 
train_button->show(); 
} 

mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
Q_OBJECT 

public: 
explicit MainWindow(QWidget *parent = 0); 
~MainWindow(); 

private: 
Ui::MainWindow *ui; 
}; 

#endif // MAINWINDOW_H 


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

Was soll ich tun?

+0

Für den Anfang ist es besser (aus meiner Sicht), Anwendung mit QWidget als Basisklasse zu erstellen. QMainWindow bietet eine Menge zusätzliche Funktionalität und Sie können es nur lernen, wenn Sie etwas Erfahrung es Qt haben werden. –

Antwort

17

Im Hauptfenster sollten Sie das zentrale Widget verwenden. Sie haben zwei Möglichkeiten:

die Taste für die zentrale Widget-Set (nicht so gute Wahl):

QPushButton *train_button = new QPushButton(this); 
train_button->setText(tr("something")); 
setCentralWidget(train_button); 

ein Widget hinzufügen und die Schaltfläche, um dieses Widget hinzufügen und das Widget für centralWidget gesetzt:

QWidget * wdg = new QWidget(this); 
QPushButton *train_button = new QPushButton(wdg); 
train_button->setText(tr("something")); 
setCentralWidget(wdg); 

Und sicher können Sie Layouts für Ihre centralWidget verwenden:

QWidget * wdg = new QWidget(this); 
QVBoxLayout *vlay = new QVBoxLayout(wdg); 
QPushButton *btn1 = new QPushButton("btn1"); 
vlay->addWidget(btn1); 
QPushButton *btn2 = new QPushButton("btn2"); 
vlay->addWidget(btn2); 
QPushButton *btn3 = new QPushButton("btn3"); 
vlay->addWidget(btn3); 
wdg->setLayout(vlay); 
setCentralWidget(wdg); 
+0

Was ist, wenn ich weitere Schaltflächen hinzufügen möchte? Soll ich das gleiche Widget verwenden oder ein neues Widget für jede Schaltfläche erstellen? – Learner

+0

@ user2595561 ~> Nein! Sie haben nur ein zentrales Widget! Sie sollten Layouts verwenden. Ich werde meine Antwort sehr bald aktualisieren. – saeed

+0

Vielen Dank. Es funktioniert wie Magie :) – Learner

Verwandte Themen