C++ Qt: nerefreshuje se druhý formulář

Tom_as

C++ Qt: nerefreshuje se druhý formulář
« kdy: 10. 09. 2012, 13:05:26 »
Ahojte,

můj problém je v tom že mám mainwindow.cpp (hlavni dialogvé okno) a addvirtualhosts.cpp (druhé dialogové okno). V mainwindow mám ListWidget, který naplním při spuštění programu. Potom chci přidat novou položku přes dialogové okno addvirtualhosts.cpp. Vše se provede jak má ale když v addvirtualhosts.cpp volám:

Kód: [Vybrat]
void addVirtualHosts::on_buttonBox_accepted()
{
.............
MainWindow *mMainWindow = new MainWindow ;
mMainWindow->refreshVirtualHostsList();

}

ve kterém je

Kód: [Vybrat]
void MainWindow::refreshVirtualHostsList(){

    this->ui->listVirtualHosts->clear();

}

tak se sice podle qDebugu funkce zavolá ale ListWidget nevyprázdní. Nevíte někdo jak tohle vyřešit? Napadá mě jen jedna věc a to je refresh Listu každou sekundu ale to se mě zdá moc náročné.
« Poslední změna: 10. 09. 2012, 15:08:12 od Petr Krčmář »


krabicezpapundeklu

Re:C++ Qt, Nerefreshuje se druhy formular
« Odpověď #1 kdy: 10. 09. 2012, 13:52:04 »
Citace
MainWindow *mMainWindow = new MainWindow

Tohle vytvoří novou instanci.
Změň addvirtualhosts asi nějak takhle:

class AddVirtualHosts : public ...
{
public:
    AddVirtualHosts(..., MainWindow *mainWindow) : ..., mainWindow_(mainWindow)
    ...
private:
    MainWindow *mainWindow_;
    ...
}


Potom

void addVirtualHosts::on_buttonBox_accepted()
{
    ...
    mainWindow_->refreshVirtualHostsList();
}


Při vytváření addvirtualhosts z mainwindow potom:

... = new AddVirtualHosts(..., this);

Tom_as

Re:C++ Qt, Nerefreshuje se druhy formular
« Odpověď #2 kdy: 10. 09. 2012, 14:59:09 »
Prosím tímto o trpělivost ale mám tohle:

addvirtualhosts.h >

Kód: [Vybrat]
#ifndef ADDVIRTUALHOSTS_H
#define ADDVIRTUALHOSTS_H

#include <QDialog>
#include <QSqlDatabase>
#include "mainwindow.h"

a v mainwindow.h

Kód: [Vybrat]
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "hosts.h"
#include "server.h"
#include "QLabel"
#include "QPlainTextEdit"
#include "QGridLayout"
#include "addvirtualhosts.h"

Samozrejmne se krizi include ale bez toho tezko muzu nastavit to co me pises nebo jsem neco prehledl?

krabicezpapundeklu

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #3 kdy: 10. 09. 2012, 15:34:50 »
addvirtualhosts.h:

#ifndef ADDVIRTUALHOSTS_H
#define ADDVIRTUALHOSTS_H

#include <QDialog>
#include <QSqlDatabase>
#include "mainwindow.h" <--- odstranit
class MainWindow;<--- přidat


addvirtualhosts.cpp:

#include "mainwindow.h" <--- přidat

Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #4 kdy: 10. 09. 2012, 20:43:40 »
Mockrát děkuji za tvoji pomoc a trpělivost učím se to na projektu, který si dělám pro sebe a v hlavičkách ještě plavu. Chtěl bych se tě zeptat co přesně označuje

 AddVirtualHosts(..., MainWindow *mainWindow) : ..., mainWindow_(mainWindow)

Bohuzel me t Qt creator nebere


Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #5 kdy: 10. 09. 2012, 21:01:16 »
Tak uz se me to povedlo presne tak jak jsi psal. Problem je v tom ze jak kliknu na tlacitko Edit tak program spadne. Zjistil jsem ze to delat this, ... = new AddVirtualHosts(..., this);

krabicezpapundeklu

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #6 kdy: 10. 09. 2012, 21:26:31 »
Můžeš poslat zdrojáky?

Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #7 kdy: 10. 09. 2012, 21:33:50 »
To nebude v zadnem pripade problem, docela bych rad vedel kde delam chybu. Na jaky email?

Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #8 kdy: 10. 09. 2012, 21:40:01 »
popripade muj email thmixcz@gmail.com nebo skype kocourcz

Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #9 kdy: 10. 09. 2012, 21:40:36 »

jozeg

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #10 kdy: 10. 09. 2012, 21:41:25 »
Skus ist na pokec.sk -> tam su vacsi odbornici, tito tu nestoja za nic! Ti poradia lepsie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

krabicezpapundeklu

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #11 kdy: 10. 09. 2012, 21:59:27 »

krabicezpapundeklu

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #12 kdy: 11. 09. 2012, 08:52:14 »
Dík za zdrojáky.
Pokud jsem to správně pochopil, tak bude stačit když vrátíš změny co jsem ti radil a kód v void addVirtualHosts::on_buttonBox_accepted() změníš z:

MainWindow *mMainWindow = new MainWindow ;
mMainWindow->refreshVirtualHostsList();


na:

if(MainWindow *mainWindow = qobject_cast<MainWindow *>(parent()))
  mainWindow->refreshVirtualHostsList();
else
  qDebug("Parent neni MainWindow!"); // nemělo by nastat



Tom_as

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #13 kdy: 11. 09. 2012, 09:30:38 »
Skvele, tohle je naprosto ono co tomu chybelo. Mockrat ti dekuji za pomoc a trpělivost.

krabicezpapundeklu

Re:C++ Qt: nerefreshuje se druhý formulář
« Odpověď #14 kdy: 11. 09. 2012, 10:04:42 »
V poho.