Herkese selam,
Bir mainwindow uyuglamam var ve 3 tab dan olusuyor. 1. sekme 6 tane groupbox tan olusuyor ve ben uygulamami bu groupboxlarin icine gommek istiyorum.
Mesela asagidaki kodda, 3. groupbox icine label , lineedit, radiobutton ve 2 push button yerlestirmek isitiyorum. Bunu belli bir duzen icinde yapmak istiyorum ve gridlayout kullanmak istiyorum. Ancak, cesitli problemlerle karsilasiyorum:
1. 12 ser tane lineedit ve label var bunlari 6 satir ve 4 sutun seklinde groupbox in sol ust tarafina konumlandirmak istiyorum. Siralama soyle, label lineedit lineedit label. Ayrica, bir de bunlara baslik olsun diye iki tane de label yarattim ancak gridlayout kulaninca basliklar ile asagidaki grup arasinda buyuk bosluk olusuyor,
2. Gridlayout kullandiigmda her seferinde groupbox in asagisina yasliyor her seyi basliklar haric. Her widge in veya gridlayout un groupbox icindeki konumunu kontrol etmenin daha kolay bir yolu var mi? NNe tip fonksiyonlar kullanabilirim.
3. Ayrica, tuslari gridlayout kullanarak sag en alt kosye yaslamak istedigimde en sagdaki butonnu, groupboz in sol en ust kosesine koyuyor..
4, Genel anlamda groupbox icindeki layout u duzenlemenin en mantikli yolu nedir? ne gibi araclar isimi kolaylastirir?
Tesekurler
//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);
}
↧