Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Tom_as 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:
void addVirtualHosts::on_buttonBox_accepted()
{
.............
MainWindow *mMainWindow = new MainWindow ;
mMainWindow->refreshVirtualHostsList();
}
ve kterém je
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é.
-
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);
-
Prosím tímto o trpělivost ale mám tohle:
addvirtualhosts.h >
#ifndef ADDVIRTUALHOSTS_H
#define ADDVIRTUALHOSTS_H
#include <QDialog>
#include <QSqlDatabase>
#include "mainwindow.h"
a v mainwindow.h
#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?
-
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
-
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
-
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);
-
Můžeš poslat zdrojáky?
-
To nebude v zadnem pripade problem, docela bych rad vedel kde delam chybu. Na jaky email?
-
popripade muj email thmixcz@gmail.com nebo skype kocourcz
-
oprava thomixcz@gmail.com
-
Skus ist na pokec.sk -> tam su vacsi odbornici, tito tu nestoja za nic! Ti poradia lepsie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
krabicezpapundeklu@gmail.com
-
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
-
Skvele, tohle je naprosto ono co tomu chybelo. Mockrat ti dekuji za pomoc a trpělivost.
-
V poho.