c++ - How to organize a system of parent and child windows that hide their parent. QT -
c++ - How to organize a system of parent and child windows that hide their parent. QT -
let’s have main window.
then when click button want kid window open , main windows hide. when close kid window want main windows reappear.
right i’m opening kid window doing:
s=new signupwindow(null,temp); s->show();
where s private pointer of main window.
when seek do:
s=new signupwindow(this,temp); s->show();
the s window doesn’t show up.
here signature of it’s constructor in it's header:
signupwindow (qwidget* parent=null, netflix *n=null);
can explain why set parent null in header? issues when seek play around it's parameters , errors like:
candidate expects 1 argument, 2 provided qt
thanks you're help -a tired college pupil learning qt
update next header main window:
class loginwindow : public qwidget { q_object public: loginwindow (qwidget* parent=null, netflix *n=null); public slots: void loggedin(); void newuser(); void quitpushed(); private: qpushbutton *quitbutton, *loginbutton, *newuserbutton; qlineedit *login;//this text area takes in loginid }; #endif
then there function initiated button click opens new windows:
void loginwindow::newuser() { s=new signupwindow(null,temp); s->show(); //this->hide(); }
how connect s loginwindow?
update 2 signupwindow.h:
class signupwindow : public qwidget { q_object public: signupwindow (qwidget* parent=null, netflix *n=null); public slots: private: };
signupwindow.cpp:
signupwindow::signupwindow (qwidget* parent, netflix *n) : qwidget (parent) { qvboxlayout *mainlayout = new qvboxlayout; //then add together things buttons , grouping boxes , etc no dialogs... }
i never made dialog signupwindow. added layouts , buttons etc.
when create signupwindow
within loginwindow
set this
parent. in case able phone call parentwidget()
within signupwindow
, phone call hide()
, when close signupwindow
, phone call parentwidget()
1 time again , phone call show().
work when parent of signupwindow
loginwindow
.
in code parent null
works when parent this
.
but signupwindow
should dialog
or:
if signupwindow
widget
when set parent, signupwindow
appears on parent, qdialog
appears in separate window. if utilize qdialog
subclass set parent , utilize solution, if utilize qwidget
subclass set null
parent , can't utilize parent-child
relationship, should utilize signals , slots (catch signal signupwindow
, show or hide loginwindow
). create choice, pay attending qdialog
more suitable task.
also suggest utilize closeevent
sure can grab closing when user clicks on close button
.
i wrote dialog , tested it, works fine:
header:
#ifndef dialog_h #define dialog_h #include <qdialog> #include <qcloseevent> namespace ui { class dialog; } class dialog : public qdialog { q_object public: explicit dialog(qwidget *parent = 0); ~dialog(); protected: void closeevent(qcloseevent *); private: ui::dialog *ui; }; #endif // dialog_h
cpp:
//constructor dialog::dialog(qwidget *parent) : qdialog(parent), ui(new ui::dialog) { ui->setupui(this); parentwidget()->hide(); } //closeevent void dialog::closeevent(qcloseevent *) { parentwidget()->show(); }
usage (inside mainwindow):
dialog *mdialog = new dialog(this); mdialog->show();
as can see set parent dialog appears separate windows , still can utilize parent-child
relationship.
works want , easy, add together few lines of code.
c++ qt user-interface
Comments
Post a Comment