Marceli Palak Inne
Temat: MainForm w środku Widget
Ktoś może miałby pomysł jak poprawić taki kod:Tworzę Widget który w sobie ma umieszczone okno QMainWindow
które ma być rozpięte na cały obszar kontrolki.
Tylko jak zmusić aby mainwindow zmieniał rozmiar wraz z wymiarami VWidget ?
Marceli Palak edytował(a) ten post dnia 07.12.11 o godzinie 14:19
class VWidget : public QWidget
{
Q_OBJECT
public:
QMainWindow* mainwindow;
explicit VWidget(QWidget *parent = 0);
~VWidget();
}
VWidget::VWidget(QWidget *parent) :
QWidget(parent)
{
if (QAxFactory::isServer()&&true)
{
mainwindow = new QMainWindow();
mainwindow->show();
mainwindow->setParent(this);
mainwindow->setGeometry(0,0,this->width(),this->height());
}
}
Tomasz
Ziobrowski
Oprogramowanie dla
przemysłu i nie
tylko
Temat: MainForm w środku Widget
Zamiast:
mainwindow->show();
mainwindow->setParent(this);
mainwindow->setGeometry(0,0,this->width(),this->height());
Po prostu zrób coś takiego:
QLayout * layout = new QHBoxLayout(); // Moze tez byc QVBoxLayout;
layout->addWidget(mainwindow);
setLayout(layout);
i gotowe.
Marceli Palak Inne
Temat: MainForm w środku Widget
U mnie drobna poprawka musiała być, ale może to wynika ze specyfiki tego co jest jeszcze na mainwindow
mainwindow->show(); // bez tego nie che działac
// aplikacja sie zawiesza , tak jak by żadne komunikaty nie docierały do aplikacji
QLayout * layout = new QHBoxLayout(); // Moze tez byc QVBoxLayout;
layout->addWidget(mainwindow);
setLayout(layout);
// mainwindow->show(); // jak tutaj dam show to tez sie zawiesza :(
To że pokazuje okno zanim je rozciągnę na WIdget objawia się tym ze na chwile widać dodatkowe okno które po ułamku sekundy znika :)
Dlaczego jak zrobie w odwrotnej kolejności nie działa to brak koncepcji
A poza tym to wszystko działa OKMarceli Palak edytował(a) ten post dnia 07.12.11 o godzinie 14:20
Tomasz
Ziobrowski
Oprogramowanie dla
przemysłu i nie
tylko
Temat: MainForm w środku Widget
W jaki sposób powołujesz do życia okienko VWidget? Czy one jest głównym oknem programu?Zakładam, że w main.cpp masz coś w ten deseń.
VWidget widget;
widget.show();
wówczas nie powinieneś mieć konieczności wywoływania:
mainwindow->show();
W sumie nie pamiętam czy Layout robi to za ciebie czy nie (być może dlatego tak musisz zrobić) ... ale na wszelki wypadek możesz powołać MainWindow z rodzicem ustawionym na widget wewnątrz którego osadzasz.
mainwindow = new QMainWindow(this);
Z ciekawości: Dlaczego robisz to w ogóle w ten sposób? Co takiego robi VWidget, że jest ono ponad MainWindow?
