(25)使用表格窗体 QTableWidget 的范例,一个小例子。

(1)布局如下

在这里插入图片描述

(2) 查看对应的 ui_widget . h 文件

#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTableWidget>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QVBoxLayout  * verticalLayout;//主窗体上一个按钮,一个表格窗体。
    QPushButton  * pushButton ;
    QTableWidget * tableWidget;

    void setupUi(QWidget * Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(136, 120);
        QFont font;
        font.setPointSize(14);
        Widget->setFont(font);       //这一段是设置主窗体,并给予垂直布局
        Widget->setContextMenuPolicy(Qt::CustomContextMenu);
        verticalLayout = new QVBoxLayout(Widget);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));

        pushButton = new QPushButton(Widget);   //生成按钮组件
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        verticalLayout->addWidget(pushButton);

        tableWidget = new QTableWidget(Widget); //生成表格窗体

        if (tableWidget->columnCount() < 3)     //至少三列么?
            tableWidget->setColumnCount(3);

        //为表格窗体里的组件起名,起的名字怪怪的,避免重复,俩下划线已经很奇特安全了。
        QTableWidgetItem * __qtablewidgetitem = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(0, __qtablewidgetitem);

        QTableWidgetItem *__qtablewidgetitem1 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(1, __qtablewidgetitem1);

        QTableWidgetItem *__qtablewidgetitem2 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(2, __qtablewidgetitem2); //生成水平表头

        if (tableWidget->rowCount() < 2) //生成两行
            tableWidget->setRowCount(2);

        QTableWidgetItem *__qtablewidgetitem3 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(0, __qtablewidgetitem3);   

        QTableWidgetItem *__qtablewidgetitem4 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(1, __qtablewidgetitem4);   //生成垂直表头

        QTableWidgetItem *__qtablewidgetitem5 = new QTableWidgetItem();
        tableWidget->setItem(0, 0, __qtablewidgetitem5);  //依次生成表里的每个元素[0,0]
        
        QTableWidgetItem *__qtablewidgetitem6 = new QTableWidgetItem();
        tableWidget->setItem(0, 1, __qtablewidgetitem6);  //[0,1]
        
        QTableWidgetItem *__qtablewidgetitem7 = new QTableWidgetItem();
        tableWidget->setItem(0, 2, __qtablewidgetitem7);  //[0,2]
        
        QTableWidgetItem *__qtablewidgetitem8 = new QTableWidgetItem();
        tableWidget->setItem(1, 0, __qtablewidgetitem8);  //[1,0]
        
        QTableWidgetItem *__qtablewidgetitem9 = new QTableWidgetItem();
        tableWidget->setItem(1, 1, __qtablewidgetitem9);  //[1,1]
        
        QTableWidgetItem *__qtablewidgetitem10 = new QTableWidgetItem();
        tableWidget->setItem(1, 2, __qtablewidgetitem10); //[1,2]
        
        tableWidget->setObjectName(QString::fromUtf8("tableWidget"));
        tableWidget->horizontalHeader()->setVisible(true);//使水平表头可见。
        tableWidget->horizontalHeader()->setDefaultSectionSize(31);

        verticalLayout->addWidget(tableWidget); //把表格窗体加入到主窗体地的布局中。

        retranslateUi(Widget);

        QMetaObject::connectSlotsByName(Widget);//允许通过函数名绑定信号与槽函数。
    } // setupUi

    void retranslateUi(QWidget * Widget)
    {   //设置程序的标题
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "H", nullptr));
        pushButton->setText(QCoreApplication::translate(
            "Widget", "pushButton", nullptr));
        
        //以下依次赋予行表头与列表头要显示的文本: cA cB cC rA rB
        QTableWidgetItem *___qtablewidgetitem = tableWidget->horizontalHeaderItem(0);
        ___qtablewidgetitem->setText(QCoreApplication::translate(
            "Widget", "cA", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem1 = tableWidget->horizontalHeaderItem(1);
        ___qtablewidgetitem1->setText(QCoreApplication::translate(
            "Widget", "cB", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem2 = tableWidget->horizontalHeaderItem(2);
        ___qtablewidgetitem2->setText(QCoreApplication::translate(
            "Widget", "cC", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem3 = tableWidget->verticalHeaderItem(0);
        ___qtablewidgetitem3->setText(QCoreApplication::translate(
            "Widget", "rA", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem4 = tableWidget->verticalHeaderItem(1);
        ___qtablewidgetitem4->setText(QCoreApplication::translate(
            "Widget", "rB", nullptr));

        const bool __sortingEnabled = tableWidget->isSortingEnabled();
        tableWidget->setSortingEnabled(false); //给表格中条目赋值时候不允许排序
        
        QTableWidgetItem *___qtablewidgetitem5 = tableWidget->item(0, 0);
        ___qtablewidgetitem5->setText(QCoreApplication::translate(
            "Widget", "0", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem6 = tableWidget->item(0, 1);
        ___qtablewidgetitem6->setText(QCoreApplication::translate(
            "Widget", "1", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem7 = tableWidget->item(0, 2);
        ___qtablewidgetitem7->setText(QCoreApplication::translate(
            "Widget", "2", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem8 = tableWidget->item(1, 0);
        ___qtablewidgetitem8->setText(QCoreApplication::translate(
            "Widget", "3", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem9 = tableWidget->item(1, 1);
        ___qtablewidgetitem9->setText(QCoreApplication::translate(
            "Widget", "4", nullptr));
        
        QTableWidgetItem *___qtablewidgetitem10 = tableWidget->item(1, 2);
        ___qtablewidgetitem10->setText(QCoreApplication::translate(
            "Widget", "5", nullptr));
        
        tableWidget->setSortingEnabled(__sortingEnabled);
        //最后恢复表格中的排序设置。
        
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

(3)我们可以借鉴里面的使用该表格窗体的标准做法。

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值