4

私はまだ Qt を学んでおり、Qt に関する質問に対して非常にタイムリーな素晴らしい回答を提供してくれた SO コミュニティに感謝しています。ありがとうございました。

にヘッダーを追加するという考えについて、私はかなり混乱していQTableWidgetます。私がやりたいのは、チーム メンバーに関する情報を含むテーブルを用意することです。メンバーのそれぞれrowには、姓と名をそれぞれのセルに含め、一方のセルに電子メール アドレスを、もう一方のセルにオフィスを含める必要があります。headerこれらの列の上に、適切な名前を付ける必要があります。

簡単に始めて、ヘッダーだけで「姓」を表示しようとしています(姓のように)。これが私のコードです。

int column = m_ui->teamTableWidget->columnCount();
m_ui->teamTableWidget->setColumnCount(column+1);
QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
Qt::Horizontal, QVariant(QVariant::String, &qq));

テーブルは正しくレンダリングされますが、ヘッダーに期待する内容が含まれていません。テキスト「1」を含む1つのセルが含まれています。

私は明らかにここで間違っている非常にばかげたことをしていますが、私は迷っています。私はドキュメントを流し続けますが、何も見つかりません。

助けてくれてありがとう。

4

4 に答える 4

9

最も簡単な解決策はsetHorizontalHeaderLabels(myListOfHeaderLabels).

于 2009-11-24T21:34:26.217 に答える
5

潜在的な問題が 1 つありますが、これを行う簡単な方法もあります。

まず、問題:

QString* qq = new QString("Last"); // <- qq is a pointer to a string.
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, 
    QVariant(QVariant::String, &qq)); // <- You take the address of a pointer, or create a handle.

代わりにこれをやりたいと思います:

QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, QVariant(QVariant::String, *qq));

次に、ヘッダー項目のデータを設定する簡単な方法:

m_ui->teamTableWidget->horizontalHeaderItem( 0 )->setText( "Last" );
于 2009-11-25T16:10:42.090 に答える
3

後世のために:

QAbstractItemModelのsetHeaderData()およびheaderData()のデフォルトの実装は、何もしません。有用なラベルを返すために、headerData()を(再)実装することができます(すべきですか?)。

于 2011-12-16T18:55:37.553 に答える
3

私を適切な場所に導いてくれた人の要求に応じて、これを達成した方法を回答として投稿し、それを受け入れています.

    m_ui->teamTableWidget->setColumnCount(m_ui->teamTableWidget->columnCount()+1);
    QTableWidgetItem* qtwi = new QTableWidgetItem(QString("Last"),QTableWidgetItem::Type);
    m_ui->teamTableWidget->setHorizo​​ntalHeaderItem(0,qtwi);
于 2009-11-25T18:22:56.753 に答える