2013-08-01 15 views
8

Sono nuovo alla programmazione qt quindi per favore non importa se lo trovi una domanda noob. Ho aggiunto un pulsante alla mia finestra principale, ma quando eseguo il codice il pulsante non viene visualizzato. Ecco il mio codice:Come aggiungere pulsanti a una finestra principale in Qt?

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; 
} 

Cosa devo fare?

+0

Per l'inizio è meglio (dal mio punto di vista) creare un'applicazione con QWidget come classe base. QMainWindow fornisce molte funzionalità extra e potresti impararlo solo quando ne avrai esperienza Qt. –

risposta

17

Nella finestra principale è necessario utilizzare il widget centrale. Hai due scelte:

Impostare il pulsante per il widget di centrale (Non così buona scelta):

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

Aggiungere un widget e aggiungere il pulsante per quel widget e impostare il widget per centralWidget:

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

E sicuramente si può utilizzare per il vostro layout centralWidget:

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

E se volessi aggiungere altri pulsanti? Dovrei usare lo stesso widget o creare un nuovo widget per ogni pulsante? – Learner

+0

@ user2595561 ~> No! Hai solo un widget centrale! Dovresti usare Layouts. Aggiornerò la mia risposta molto presto – saeed

+0

Grazie mille. Funziona come una magia :) – Learner

Problemi correlati