第四步,添加通过“表头”对话框,设置表头标题的功能。
C:\Users\Minwei\Projects\Qt\Sheet\headerdialog.h:
xxxxxxxxxx
171...
2
3...
4class HeaderDialog : public QDialog
5{
6 ...
7public:
8 ...
9 void setHeaderLabels(QStringList const& headerLabels);
10 QStringList getHeaderLabels(void);
11 ...
12private:
13 ...
14 QStringListModel* m_model;
15 ...
16};
17...
C:\Users\Minwei\Projects\Qt\Sheet\headerdialog.cpp:
xxxxxxxxxx
211...
2HeaderDialog::HeaderDialog(QWidget *parent) :
3 ...
4 m_model(new QStringListModel(this))
5 ...
6{
7 ...
8 ui->m_list->setModel(m_model);
9 ...
10}
11...
12void HeaderDialog::setHeaderLabels(QStringList const& headerLabels)
13{
14 m_model->setStringList(headerLabels);
15}
16
17QStringList HeaderDialog::getHeaderLabels(void)
18{
19 return m_model->stringList();
20}
21...
C:\Users\Minwei\Projects\Qt\Sheet\sheetwindow.cpp:
xxxxxxxxxx
171...
2
3...
4void SheetWindow::on_m_actHeader_triggered()
5{
6 QStringList headerLabels;
7 for (int column = 0; column < m_model->columnCount(); ++column)
8 headerLabels.append(m_model->headerData(
9 column, Qt::Horizontal, Qt::DisplayRole).toString());
10
11 HeaderDialog dlg(this);
12 dlg.setHeaderLabels(headerLabels);
13
14 if (dlg.exec() == QDialog::Accepted)
15 m_model->setHorizontalHeaderLabels(dlg.getHeaderLabels());
16}
17...
运行效果如图所示: