(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)我们可以借鉴里面的使用该表格窗体的标准做法。
谢谢