• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Aktualizacja okna

Object Storage Arubacloud
0 głosów
172 wizyt
pytanie zadane 6 czerwca 2016 w C i C++ przez MiO Obywatel (1,310 p.)

Witam!
Chciałbym  zrobić tak, by po wciśnięciu na jednego toolbara całe okno zaktualizowało się na nowe okno;

coś na zasadzie zakładek tak by mogły być przełączane

 

plik header:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "zobowiazania.h"
#include "mainwindow.h"
#include <QObject>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:


    void on_actionZobowiazania_triggered();

private:
    Ui::MainWindow *ui;
};




#endif // MAINWINDOW_H

plik  cpp

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "zobowiazania.h"

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

}


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


void MainWindow::on_actionZobowiazania_triggered()
{
        
}



i plik main

 

#include "mainwindow.h"
#include <QApplication>
#include "zobowiazania.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();

}

Prosiłbym o pomoc :/ Kombinowałem z funkcją update, lecz nie umiem tego zrobić

2 odpowiedzi

0 głosów
odpowiedź 6 czerwca 2016 przez Bondrusiek Maniak (61,370 p.)
wybrane 6 czerwca 2016 przez MiO
 
Najlepsza

Witam,

aby pokazywać lub chować okno wykorzystuje się dwie metody (show() i hide()). W tym przypadku okna to textEdit( Ty sobie podmień na swoje) a ToolButtony to actionNew[x] w formularzu.

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
    QTextEdit *textEdit[3];
public slots :
    void newslot();
    void new1slot();
    void new2slot();
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    for(int i = 0 ; i < 3 ; i++){
        textEdit[i] = new QTextEdit(this);
        textEdit[i]->setGeometry(0,50,100,100);
        textEdit[i]->setText(QString::number(i+1));
        textEdit[i]->hide();
    }
    connect(ui->actionNew,SIGNAL(triggered(bool)),this,SLOT(newslot()));
    connect(ui->actionNew1,SIGNAL(triggered(bool)),this,SLOT(new1slot()));
    connect(ui->actionNew2,SIGNAL(triggered(bool)),this,SLOT(new2slot()));
}

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

void MainWindow::newslot()
{
    textEdit[0]->show();
    textEdit[1]->hide();
    textEdit[2]->hide();
}

void MainWindow::new1slot()
{
    textEdit[1]->show();
    textEdit[0]->hide();
    textEdit[2]->hide();
}

void MainWindow::new2slot()
{
    textEdit[2]->show();
    textEdit[0]->hide();
    textEdit[1]->hide();
}

Reszta jest domyślnie.

0 głosów
odpowiedź 6 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
Najprostszą metodą będzie stworzenie funkcji o nazwach np. Okno1(), Okno2() oraz zmiennej operującej np. int State.
Następnie w main'ie tworzysz 2 if'y:
if(State==0) Okno1(); else if(State==1) Okno2();
Oczywiście każda z tych funkcji odpowiada za "aktualizowanie" odpowiedniego okna, czyli przykładowo gdy wykonuje się funkcja Okno1() to w ramce rysowane są jakieś figury, a jeżeli Okno2() to wyświetla tabela. :D
komentarz 6 czerwca 2016 przez MiO Obywatel (1,310 p.)
Mógłbyś może jakoś zaprezentowa swój pomysł na podstawie mojego kodu? Byłbym niezmiernie wdzięczny
komentarz 6 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
#include "mainwindow.h"
#include <QApplication>
#include "zobowiazania.h"

int State=0;

void Okno1(MainWindow &w)
{
    //Wyświetlanie figur w oknie [w]
}

void Okno2(MainWindow &w)
{
    //Wyświetlanie tabeli w oknie [w]
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    // Tutaj jakiś warunek kiedy ma się zmienić State z 0 na 1 i odwrotnie

    if(State==0) Okno1(); else if(State==1) Okno2();
 
    return a.exec();
 
}

Myślę, że to by było coś w tym stylu (ale nie znam programu na którym pracujesz, więc dokładnie ci nie powiem/pokażę

Podobne pytania

0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 30 kwietnia 2023 w C i C++ przez Filipx02 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 163 wizyt
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 14 lipca 2018 w C i C++ przez Artur Koniec Gaduła (3,670 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...