【QT】QGridLayout


【目的】

  1. 練習QGrid用法。 基本使用方式
    void addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )
    void addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
  2. 練習如何以 sprintf 來指定 Qstring 內容。例如
    str.sprintf("Row Col<B>(%d,%d)</B>", i, j);
  3. 由於我常常會忘記那個方向是Row/Column,順便用這個範例來練習。

【程式】

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("QGridLayout Example");
window->resize(250, 100);
QGridLayout *layout = new QGridLayout;
layout->setSpacing(2);
layout->setMargin(2);
for(int i = 0; i < 3; i++)
{
  for(int j = 0; j < 3; j++)
  {
    QString str;
    str.sprintf("Row Col<B>(%d,%d)</B>", i, j);
    QLabel *label = new QLabel(str);
    label->setFrameStyle(QFrame::Panel + QFrame::Sunken);
    label->setMinimumSize(100, 0);
    label->setAlignment(Qt::AlignCenter);
    layout->addWidget(label, i, j);
  }
}
window->setLayout(layout);
window->show();
return app.exec();
}

【結果】

image

【備註】

另外的Layout元件

  1. QHBoxLayout
  2. QVBoxLayout(垂直 Vertical)

【參考】

  1. Qt4 Gossip: QGridLayout 版面配置
    http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QGridLayout.html
  2. 網頁中的表格觀念(其實和html td 的 row/col 是一樣的)
    http://dob.tnc.edu.tw/themes/old/showPage.php?s=14&t=3
 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com