Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Forum Updated on Feb 6th

    [Solved] Display QMainwWindow and QMdiArea

    General and Desktop
    3
    11
    10195
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mbynet last edited by

      MdiArea setCentralWidget MainWindow . To mdiarea add subwindow ClientWindow. In ClientWindow click pushbutton after addsubwindow Qwidget. ClientWindow & QWidegt showmaximized. How display QWidget size(200,200)? Resize dont work
      @#include <QtGui>
      #include "mainwindow.h"

      MainWindow::MainWindow()
      {

      createActions();
      createMenus();
      mdiArea = new QMdiArea();
      

      // mdiArea->setViewMode(QMdiArea::TabbedView);
      setCentralWidget(mdiArea);
      setWindowTitle(trUtf8("Quality Jobs Projects"));
      showMaximized();

      }

      MainWindow::~MainWindow()
      {

      }

      void MainWindow::createActions()
      {
      spClient = new QAction(trUtf8("Клиенты"),this);
      connect(spClient,SIGNAL(triggered()),this,SLOT(spClientShow()));

      }

      void MainWindow::createMenus()
      {
      spMenu = menuBar()->addMenu(trUtf8("Справочники"));
      spMenu->addAction(spClient);

      }

      void MainWindow::spClientShow()
      {
      clWindow = new ClientWindow;
      mdiArea->addSubWindow(clWindow);
      connect(clWindow->getAddAction(),SIGNAL(triggered()),this,SLOT(spShShow()));
      clWindow->setWindowTitle(trUtf8("Клиенты"));
      clWindow->showMaximized();

      }

      void MainWindow::spShShow()
      {
      QWidget *wgt = new QWidget();
      mdiArea->addSubWindow(wgt);
      wgt->show();
      }

      @

      Picture:
      !http://img408.imageshack.us/img408/7256/36399747.gif(1)!

      1 Reply Last reply Reply Quote 0
      • F
        Franzk last edited by

        QMdiArea::addSubWindow() returns a QMdiSubWindow. Do your resizing on that instead of the QWidget. You can probably also set the size of the widget before you add it to the mdi area. That will initialize the QMdiSubWindow with the correct size.

        "Horse sense is the thing a horse has which keeps it from betting on people." -- W.C. Fields

        http://www.catb.org/~esr/faqs/smart-questions.html

        1 Reply Last reply Reply Quote 0
        • M
          mbynet last edited by

          please post example

          @void MainWindow::spShShow()
          {
          QWidget *wgt = new QWidget();
          wgt->resize(200,200);
          mdiArea->addSubWindow(wgt);
          wgt->show();
          }

          @

          dont work too

          1 Reply Last reply Reply Quote 0
          • F
            Franzk last edited by

            Untested but most likely to work:
            @QWidget *w = new QWidget;
            QMdiSubWindow *sw = mdiArea->addSubWindow(w);
            sw->resize(200,200);
            sw->show();@

            "Horse sense is the thing a horse has which keeps it from betting on people." -- W.C. Fields

            http://www.catb.org/~esr/faqs/smart-questions.html

            1 Reply Last reply Reply Quote 0
            • M
              mbynet last edited by

              i use this example, dont work. sw - show max window.

              1 Reply Last reply Reply Quote 0
              • G
                goetz last edited by

                This works as expected:

                @

                #include <QApplication>
                #include <QMainWindow>
                #include <QMdiArea>
                #include <QMdiSubWindow>
                #include <QTextEdit>

                int main(int argc, char **argv)
                {
                QApplication a(argc, argv);

                QMainWindow mw;
                QMdiArea *mdi = new QMdiArea(&mw);
                mw.setCentralWidget(mdi);
                
                QTextEdit *te = new QTextEdit;
                QMdiSubWindow *sw = mdi->addSubWindow(te);
                sw->resize(300,100);
                sw->show();
                
                mw.show();
                a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
                return a.exec&#40;&#41;;
                

                }
                @

                http://www.catb.org/~esr/faqs/smart-questions.html

                1 Reply Last reply Reply Quote 0
                • G
                  goetz last edited by

                  BTW: Are you sure you call the right function?MainWindow::spClientShow() always shows your new Window maximized!

                  http://www.catb.org/~esr/faqs/smart-questions.html

                  1 Reply Last reply Reply Quote 0
                  • M
                    mbynet last edited by

                    [quote author="Volker" date="1288698753"]This works as expected:

                    @

                    #include <QApplication>
                    #include <QMainWindow>
                    #include <QMdiArea>
                    #include <QMdiSubWindow>
                    #include <QTextEdit>

                    int main(int argc, char **argv)
                    {
                    QApplication a(argc, argv);

                    QMainWindow mw;
                    QMdiArea *mdi = new QMdiArea(&mw);
                    mw.setCentralWidget(mdi);
                    
                    QTextEdit *te = new QTextEdit;
                    QMdiSubWindow *sw = mdi->addSubWindow(te);
                    sw->resize(300,100);
                    sw->show();
                    
                    mw.show();
                    a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
                    return a.exec&#40;&#41;;
                    

                    }
                    @[/quote]

                    question another!!!!

                    @#include <QApplication>
                    #include <QMainWindow>
                    #include <QMdiArea>
                    #include <QMdiSubWindow>
                    #include <QTextEdit>

                    int main(int argc, char **argv)
                    {
                    QApplication a(argc, argv);

                    QMainWindow mw;
                    QMdiArea *mdi = new QMdiArea(&mw&#41;;
                    mw.setCentralWidget(mdi);
                    
                    QTextEdit *te = new QTextEdit;
                    QMdiSubWindow *sw = mdi->addSubWindow(te);
                    

                    // sw->resize(300,100);
                    sw->showMaximized();

                    QTextEdit *ti = new QTextEdit;
                    QMdiSubWindow *sb = mdi->addSubWindow(ti);
                    sb->resize(300,100);
                    sb->show();
                    
                    mw.show();
                    a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
                    return a.exec(&#41;;
                    

                    }
                    @
                    How Display QTextEdit *ti size(300,100)??? *ti Display Maximized. If push minimize 2 windows minimize and *ti take size 300,100

                    1 Reply Last reply Reply Quote 0
                    • M
                      mbynet last edited by

                      finish resault must out !http://img827.imageshack.us/img827/7070/11579515.jpg(2)!

                      1 Reply Last reply Reply Quote 0
                      • G
                        goetz last edited by

                        You must call

                        @
                        mdi->setOption(QMdiArea::DontMaximizeSubWindowOnActivation, true);
                        @

                        http://www.catb.org/~esr/faqs/smart-questions.html

                        1 Reply Last reply Reply Quote 0
                        • M
                          mbynet last edited by

                          [quote author="Volker" date="1288712567"]You must call

                          @
                          mdi->setOption(QMdiArea::DontMaximizeSubWindowOnActivation, true);
                          @[/quote]

                          big thanks, works

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post