2016-08-04 19 views
1

Wie kann ich das tun? Ich möchte eine Schaltfläche erstellen, indem ich eine andere Schaltfläche drücke, aber im aktuellen Code von mir kann ich nur eine Schaltfläche erstellen und die Schaltfläche, die ich erstellt habe, verschwindet.Erstellen von Schaltflächen auf Schaltfläche klicken in QT

Wie könnte ich das dynamisch machen? Bitte helfen Sie mir, ich bin neu in Qt.

dass der Hauptteil davon ist:

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    ui->button1->setVisible(false); 
} 

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


void MainWindow::on_multiplyButton_clicked() 
{ 
    ui->button1->setVisible(true); 
} 

Auf diese Weise wird die Schaltfläche nur erscheint, aber das scheint nicht, wie eine Lösung für mich, wenn ich es skalieren möchte.

Mit jedem Klick auf den Multiplikator sollte ein neuer Button erscheinen.

+0

Sie sollen Ihre Frage mit Ihrem aktuellen Code bearbeiten, damit wir besser Ihr Problem verstehen (siehe [MCVE] (https://www.google.fr/url?sa = t & rct = j & q = & ESRC = s & source = web & cd = 8 & cad = rja & Uist = 8 & ved = 0ahUKEwiPw7bFo6fOAhWCvRQKHYN_Dz4QFghUMAc & url = http% 3A% 2F% 2Fstackoverflow.com% 2Fhelp% 2Fmcve & usg = AFQjCNEkKReghNZHBJSaky_hwPskMmG0ww & sig2 = 9anXjmzNVE4wrvj6MgRs2Q)) – wasthishelpful

+0

Du hast Recht, es ist jetzt verständlicher? – snowy

+0

Beachten Sie, dass Sie 'QMainWindow' nicht verwenden sollten, es sei denn, Sie benötigen die andockbare Unterfensterfunktion, die es bietet. Sie sollten andernfalls einen 'QDialog' oder' QWidget' als Basisklasse verwenden. –

Antwort

1

Ich bin nicht vertraut mit dem Designer und UI-Dateien. Hier ist eine „full-Code“ Proposition:

class MainWindow : public QMainWindow { 
    public: 
     MainWindow(QWidget *parent = nullptr); 

     void on_multiplyButton_clicked(); 

    private: 
     QBoxLayout *layout; 
}; 

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { 
    // create multiply button 
    QPushButton *button = new QPushButton(tr("Push me hard")); 
    connect(
     button, &QPushButton::clicked, 
     this , &MainWindow ::on_multiplyButton_clicked 
    ); 

    // initialize button container 
    this->layout = new QHBoxLayout; // or QVBoxLayout if you prefer 
    this->layout->addWidget(button); 

    // set central widget of the main window 
    QWidget *central_widget = new QWidget; 
    central_widget->setLayout(this->layout); 
    this->setCentralWidget(central_widget); 
} 

void MainWindow::on_multiplyButton_clicked() { 
    QPushButton *button = new QPushButton(
     tr("button%1").arg(this->layout->count()) 
    ); 
    this->layout->addWidget(button); 
} 
+0

Funktioniert wie Magie, vielen Dank! – snowy