• 4451阅读
  • 3回复

有没有能存放其他组件的类似网格的部件 [复制链接]

上一主题 下一主题
离线studying
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-01
Qt里有没有什么部件是网格状的,里面能发QLabel或者QPushButton这些;像写上姓名、排名,下面的数据像表格一样分布的。哪位高手能指点下吗
离线XChinux

只看该作者 1楼 发表于: 2009-08-01
QTableView
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jorneyr

只看该作者 2楼 发表于: 2009-08-01
void FineryFlawDialog::showTotalAttributes() {
    while (!flawsCheckBoxes.isEmpty()) {
        QCheckBox *rc = flawsCheckBoxes.first();
        flawsCheckBoxes.removeFirst();
        delete rc;
    }

    QList<FineryAttribute> flaws = dao->getNodes();
    foreach(FineryAttribute flaw, flaws) {
        QCheckBox *rc = new QCheckBox(flaw.getName(), this);
        flawsCheckBoxes.append(rc);
    }

    int countOfColumn = 9;
    QGridLayout *gridLayout = new QGridLayout();
    int row = 0;
    int col = 0;
    foreach(QCheckBox *rc, flawsCheckBoxes) {
        gridLayout->addWidget(rc, row, col, 1, 1);

        ++row;
        if (row > countOfColumn) {
            ++col;
            row = 0;
        }
    }

    QWidget *flawsWidget = new QWidget(this);
    flawsWidget->setLayout(gridLayout);

    // Layout for scroll area.
    QHBoxLayout *hLayout = new QHBoxLayout();
    hLayout->addWidget(flawsWidget);
    hLayout->addStretch();

    QVBoxLayout *vLayout = new QVBoxLayout();
    vLayout->addLayout(hLayout);
    vLayout->addStretch();

    hLayout->setMargin(1);
    vLayout->setMargin(1);

    QWidget *scrollAreaContentsWidget = new QWidget();
    scrollAreaContentsWidget->setLayout(vLayout);
    QPalette palette = scrollAreaContentsWidget->palette();
    palette.setColor(QPalette::Window, Qt::white);
    scrollAreaContentsWidget->setPalette(palette);
    ui->scrollArea->setWidget(scrollAreaContentsWidget);
}

把check boxes 放到一个网格中, 按列排,每列排N个,第一列排满后再排第二列。
或许能帮到你。
离线landuochong

只看该作者 3楼 发表于: 2009-08-02
我觉得最简单的方式时使用tablewidget
快速回复
限100 字节
 
上一个 下一个