Kindle Fire Coupon Kindle Fire Coupon 2012 Kindle DX Coupon 2012 Kindle Fire 2 Coupon Amazon Coupon Codes 2012 Kindle DX Coupon PlayStation Vita Coupon kindle touch coupon amazon coupon code kindle touch discount coupon kindle touch coupon 2012 logitech g27 coupon 2012 amazon discount codes
Facebook RSS Reset

Hướng dẫn sử dụng Layout trong Qt không dùng designer

Ở bài trước, chúng ta đã biết sơ qua về cách sắp xếp các widgets sử dụng công cụ designer của Qt, tức là dạng kéo thả. Còn trong hướng dẫn này, chúng ta sẽ học cách sử dụng các Layouts của Qt bằng code. Chúng ta sẽ add các layouts vào 1 form và add các widgets đến các layout này.

Chúng ta sẽ tạo 1 empty project và tạo 6 PushButtons. Sau đó sắp xếp 3 button với horizontal layout (layout theo chiều ngang) và 3 button còn lại với Vertical layout (chiều dọc). Hai layout này sẽ được add đến layout bao bên ngoài ,và sau đó add layout này đến widget sử dụng hàm setLayout().

Tạo một empty Project :

File->Other Project->Empty Qt Project

OtherProjectEmptyQtProject

Chúng ta tạo 1 file main.cpp bằng cách Add New..

#include <QApplication>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>

int main(int argc, char* argv[])
{
   QApplication app(argc, argv);

   // Horizontal layout with 3 buttons
   QHBoxLayout *hLayout = new QHBoxLayout;
   QPushButton *b1 = new QPushButton("A");
   QPushButton *b2 = new QPushButton("B");
   QPushButton *b3 = new QPushButton("C");
   hLayout->addWidget(b1);
   hLayout->addWidget(b2);
   hLayout->addWidget(b3);

   // Vertical layout with 3 buttons
   QVBoxLayout *vLayout = new QVBoxLayout;
   QPushButton *b4 = new QPushButton("D");
   QPushButton *b5 = new QPushButton("E");
   QPushButton *b6 = new QPushButton("F");
   vLayout->addWidget(b4);
   vLayout->addWidget(b5);
   vLayout->addWidget(b6);

   // Outer Layer
   QVBoxLayout *mainLayout = new QVBoxLayout;
   
   // Add the previous two inner layouts
   mainLayout->addLayout(hLayout);
   mainLayout->addLayout(vLayout);

   // Create a widget
   QWidget *w = new QWidget();
   
   // Set the outer layout as a main layout 
   // of the widget
   w->setLayout(mainLayout);

   // Window title
   w->setWindowTitle("layouts");
   
   // Display
   w->show();
   
   // Event loop
   return app.exec();
}

Chúng ta cũng cần sửa file .pro

QT += core gui
QT += widgets
SOURCES += \
   main.cpp

Chú ý chúng ta có thể bỏ dòng config này trong pro file

QT += core gui

thay vào đó mình sẽ thêm vào phần khai báo thư viện trực tiếp trong file main.cpp

#include <QtCore>
#include <QtGui>

Run the code:

RunLayoutWithoutDesigner

Leave a comment

No comments yet.

Leave a Comment