Quantcast
Channel: QtWebEngine
Viewing all articles
Browse latest Browse all 13965

Layout Management in a Groupbox

$
0
0
Hi all, I have an mainwindow appllication with 6 groupboxes. I would like to insert a group of lineedits (their corresponding labels), radibuttons and 2 pushbuttons. But in terms of layout management I have the following problems: a. Generally speaking, how can control the positions of the each widget in the groupbox? I can not locate any item to anywhere that I want. Which classes or functions are used to get the control? b. I try to control the layout with Qgridlayout and I try to locate each item(widget) with controlling row and cols. But i think it is not efficient. 1) In my application, even I put the headers(Qlabel) in the 1st row of the gridlayout, there is a gap between them and 2nd row of the layouts. It should be closer to them. 2) Even if I try to put the cancel button to the bottom right, cancel button is now on the top left. 3) M label should be at the left side of the lineedit but it is at the right side of the okbutton. 4} Also, except the buttons, I want to locate the labels and lineedits to more upper left but my app still alligns them to bottom. How can i get them upper and left? Thanks in advance, //bcomp_main.cpp #include <QApplication>   #include "bcomp_mainwindow.h"   int main(int argc, char *argv[]) {     QApplication app(argc, argv);     bcomp_MainWindow Bcomp;       Bcomp.showMaximized();     return app.exec(); } //TabModule.h #ifndef TABMODULE_H #define TABMODULE_H   #include <QMainWindow> #include <QWidget> #include <QTabWidget> #include <QGroupBox> #include <QGridLayout> #include <QLabel> #include <QLineEdit>   class TabModule { public:     enum { NumTabs = 3};     QTabWidget *tabWidget; //tab Widgets     QWidget *tabs[NumTabs];     QGridLayout *gridLayout;     QGroupBox *groupbox[6];     //QLabel *labels[i]; }; #endif // TABMODULE_H //bcomp_mainwindow.h #ifndef BCOMP_MAINWINDOW_H #define BCOMP_MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include <QMenuBar> #include <QToolBar> #include <QStatusBar> #include "TabModule.h"   class bcomp_MainWindow : public QMainWindow {     Q_OBJECT public:     bcomp_MainWindow();   private: // members     TabModule *member;     QWidget *centralWidget;     QMenuBar *menuBar;     QToolBar *mainToolBar;     QStatusBar *statusBar;   //functions void mainSetup();   signals:     public slots:     };   #endif // BCOMP_MAINWINDOW_H //bcomp_mainwindow.cpp #include <QtGui> #include "bcomp_mainwindow.h"   bcomp_MainWindow::bcomp_MainWindow( ) {     mainSetup(); // setup main items }   void :: bcomp_MainWindow :: mainSetup () {     //Initial Size     this -> resize(863, 423);     this -> setMinimumSize(QSize(863, 423));     this -> setMaximumSize(QSize(16777215, 16777215));     //Tabs     member = new TabModule();     member -> tabWidget = new QTabWidget();     for (int i = 0; i < member -> NumTabs; ++i) {         member -> tabs[i] = new QWidget();         member -> tabWidget->addTab(member -> tabs[i], QString(tr("Button %1").arg(i + 1)));}     setCentralWidget(member -> tabWidget);       //Groupboxes for tab1     for (int i = 0; i <6 ; ++i){         member -> groupbox[i] = new QGroupBox (member -> tabs[0]);         member -> groupbox[i] -> setTitle(QString(tr("Grup %1").arg(i + 1)));}     member -> gridLayout = new QGridLayout(member -> tabs[0]);     member -> gridLayout -> setSpacing(20);     member -> gridLayout -> addWidget(member -> groupbox[0] , 0, 0 ,1 ,2);     member -> gridLayout -> addWidget(member -> groupbox[1] , 1, 0 ,9 ,2);     member -> gridLayout -> addWidget(member -> groupbox[2] , 0, 2 ,7 ,3);     member -> gridLayout -> addWidget(member -> groupbox[3] , 7, 2 ,3 ,3);     member -> gridLayout -> addWidget(member -> groupbox[4] , 0, 5 ,5 ,5);     member -> gridLayout -> addWidget(member -> groupbox[5] , 5, 5 ,5 ,5);     member -> tabs[0] -> setLayout(member -> gridLayout);     //Group of text edidors and labels in groupbox 3     QString names [18] = {"Header1", "Header2","A","B","C","D","E","F","G","H","I","J","K","L","M","N","R","P"};     QGridLayout *gLayout = new QGridLayout (member -> groupbox[2]);     QLabel *labels[14];     QLineEdit *inputbox[16];     QRadioButton *radiobutton1 = new QRadioButton(names[16],member -> groupbox[2]);     QRadioButton *radiobutton2 = new QRadioButton(names[17],member -> groupbox[2]);     QPushButton *okbutton = new QPushButton(member -> groupbox[2]);     QPushButton *canbutton = new QPushButton(member -> groupbox[2]); //    QHBoxLayout *hLayout = new QHBoxLayout();       for(int i = 0; i < 16; ++i){         labels[i] = new QLabel(names[i],member -> groupbox[2]);         if (i < 14)             inputbox[i] = new QLineEdit(member -> groupbox[2]);     }     for(int i = 0; i < 26; ++i){         if (i == 0) //Header 1 (1st row 1 st col)             gLayout -> addWidget(labels[i], 0,0,1,5);         else if (i == 1) //Header 2 (1st row 2nd col)             gLayout -> addWidget(labels[i], 0,5,1,5);         else if (i >= 2 && i < 8) //1st column             gLayout -> addWidget(labels[i], i-1,0,1,1);         else if (i >= 8 && i < 14) //2nd column             gLayout -> addWidget(inputbox[i-8], i-7,1,1,4);         else if (i >= 14 && i < 20) // 3rd col             gLayout -> addWidget(inputbox[i-8], i-13,5,1,4);         else if (i >= 20 && i < 26) //4 th coll             gLayout -> addWidget(labels[i-12], i-19,9,1,1);     }     gLayout -> addWidget(radiobutton1, 7,0,1,2);     gLayout -> addWidget(radiobutton2, 7,2,1,2);     gLayout -> addWidget(labels[14], 8,0,1,1);     gLayout -> addWidget(inputbox[12], 8,1,1,4);     gLayout -> addWidget(inputbox[13], 8,5,1,4);     gLayout -> addWidget(labels[15], 8,9,1,1);     gLayout -> addWidget(okbutton, 9,10,1,1);     gLayout -> addWidget(canbutton, 9,11,1,1); //    hLayout -> addWidget(okbutton); //    hLayout -> addWidget(canbutton); //    gLayout -> addLayout(hLayout, 10,0,1,1);     //gLayout -> setMargin(20);     //gLayout -> setSpacing(10);     member ->groupbox[2] -> setLayout(gLayout); }

Viewing all articles
Browse latest Browse all 13965

Trending Articles