我正在尝试使用QTableViewQTableWidgetItem创建表。

基本上,我试图在第一个Header下创建一些名称相同的行。

但是问题是我给每一行传递了一些名称。

我想使用QStringQStringList数组实现相同的目的。

目前,我没有在第二个标题下传递任何值。

请提出建议。 请找到输出窗口。

以下是我的代码段:

#include <QApplication>
#include <QtGui>
#include <QMainWindow>
#include <QTableWidget>
#include <QString>

#define ROW_NUMBER 20
#define COL_NUMBER 2

int main(int argc , char **argv)
{
    QApplication app(argc,argv); 

    QMainWindow *window = new QMainWindow();

    window->setWindowTitle(QString::fromUtf8("TableWidget Resize column width"));
    window->resize(200,250);

    QTableWidget *table = new QTableWidget();
    table->setRowCount(ROW_NUMBER);
    table->setColumnCount(COL_NUMBER);

    table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    table->setHorizontalHeaderLabels(QString("Field;Value").split(";"));

    table->setItem(0,0,new QTableWidgetItem("Sequence Number"));
    table->setItem(1,0,new QTableWidgetItem("Date"));
    table->setItem(2,0,new QTableWidgetItem("Seconds"));
    table->setItem(3,0,new QTableWidgetItem("Source Date"));
    table->setItem(4,0,new QTableWidgetItem("Source Time"));
    table->setItem(5,0,new QTableWidgetItem("ServiceType"));
    table->setItem(6,0,new QTableWidgetItem("Transtype"));
    table->setItem(7,0,new QTableWidgetItem("UserId"));
    table->setItem(8,0,new QTableWidgetItem("UserIMSI"));
    table->setItem(9,0,new QTableWidgetItem("CorrelationId"));
    table->setItem(10,0,new QTableWidgetItem("MajorNumber"));
    table->setItem(11,0,new QTableWidgetItem("MinorNumber"));
    table->setItem(12,0,new QTableWidgetItem("Source Type"));
    table->setItem(13,0,new QTableWidgetItem("Total Consume"));
    table->setItem(14,0,new QTableWidgetItem("Source Info"));
    table->setItem(15,0,new QTableWidgetItem("Event"));
    table->setItem(16,0,new QTableWidgetItem("GroupID"));
    table->setItem(17,0,new QTableWidgetItem("ServiceID"));
    table->setItem(18,0,new QTableWidgetItem("OperatorId"));
    table->setItem(19,0,new QTableWidgetItem("Options Array"));

    table->resizeColumnsToContents();

    window->setCentralWidget(table);

    window->show();

    return app.exec();
}

表小部件的输出

#1楼 票数:2 已采纳

QString test;

test = "a";

// First Column
table->setItem(0,0,new QTableWidgetItem(a));

// Second Column
table->setItem(0,1,new QTableWidgetItem(a));

就这样或:

// 100% working example
QVector< QString > string;
QVector< QString > value;

string.append( "Nr1" );
string.append( "Nr2" );
string.append( "Nr3" );
string.append( "Nr4" );

value.append( "1" );
value.append( "2" );
value.append( "3" );
value.append( "4" );

ui->twTable->setSortingEnabled( false );

for( int i = 0 ; i < string.size( ) && i < value.size( ) ; ++i )
{
    ui->twTable->insertRow( 0 );

    // First Column
    ui->twTable->setItem( 0 , 0 , new QTableWidgetItem( string[i] ) );

    // Second Column
    ui->twTable->setItem( 0 , 1 , new QTableWidgetItem( value[i] ) );
}

ui->twTable->setSortingEnabled( true );

arrayQStringList工作方式相同,只是没有追加。

数组:

QString str[5] = { "a" , "b" , "c" , "d" , "e" };

for( int i = 0 ; i < 5 ; ++i )
{
    ui->twTable->insertRow( 0 );

    // First Column
    ui->twTable->setItem( 0 , 0 , new QTableWidgetItem( str[i] ) );

    // Second Column
    ui->twTable->setItem( 0 , 1 , new QTableWidgetItem( str[i] + QString::number( i ) ) );
}

QStringList中:

QStringList str = { "a" , "b" , "c" , "d" , "e" };

for( int i = 0 ; i < 5 ; ++i )
{
    ui->twTable->insertRow( 0 );

    // First Column
    ui->twTable->setItem( 0 , 0 , new QTableWidgetItem( str[i] ) );

    // Second Column
    ui->twTable->setItem( 0 , 1 , new QTableWidgetItem( str[i] + QString::number( i ) ) );
}

并以相反的顺序:

// Probably the output you want:
QString str[5] = { "a" , "b" , "c" , "d" , "e" };

for( int i = 4 ; i >= 0 ; --i )
{
    ui->twTable->insertRow( 0 );

    // First Column
    ui->twTable->setItem( 0 , 0 , new QTableWidgetItem( str[i] ) );

    // Second Column
    ui->twTable->setItem( 0 , 1 , new QTableWidgetItem( str[i] + QString::number( i ) ) );
}

当您像代码中那样使用固定数量的行时,请删除ui->twTable->insertRow( 0 )

旁注:我倾向于在插入项目时禁用排序功能,并在之后启用它,以便在输入行时不会自动将它们排序到其他位置。

  ask by Chinmoy translate from so

未解决问题?本站智能推荐:

1回复

QString []和QStringList之间有什么区别

QStringList的对象和QStrings数组之间有什么区别? 我的意思是它们似乎都表现为数组。
1回复

如何将数组的值传递给Qt 5.0 C ++类

我对Qt编程和面向对象的编程还很陌生,我有一些C ++知识,主要是将微控制器用于简单的控制电路,以及对自动化系统进行硬件接口。 我正在尝试使用Qt创建一个GUI,以显示从数组中存储的xy点绘制的线条,并能够使用单独的线程更新数组中的值。 我目前有一个非常简单的程序,可以从数组中绘制线
2回复

如何将QVector作为可选参数传递给C ++中的函数?

函数声明: 第三个参数QVector应该是可选的。 我知道一种方法是为QVector指定默认参数,但是我不知道如何使用“ QVector”或“ QList”来实现。 如何将QVector作为可选参数传递给C ++中的函数?
2回复

将QString转换为QJsonArray

我正在尝试从QString获取数组。 我在网上获得了将字符串转换为QJsonDocument的建议,但是,我的数组为空。 预期结果是获得一个QJsonValues数组(一个QJsonArray):
1回复

Qt QVarLengthArray的QString内部

QVarLengthArray的内部数据结构是什么? 例如,如果我在哪里拥有: 在给定&anArray的情况下,容易计算&anArray [1]吗? 我一直在遍历QVarLengthArray源代码,试图了解QVarLengthArray如何在内存中存储QString数组。
2回复

将QString转换为unsigned char数组

我这里有一个非常基本的问题。 我尝试了谷歌搜索一段时间,因为有很多类似的问题,但没有一个解决方案适合我。 这是一个显示问题的代码段: 我尝试将QString放入unsigned char数组中,但我得到的输出总是只是'h'。 谁能告诉我这里出了什么问题?
1回复

创建一个Qstring的Json数组

如何创建跟随Qstring的Json数组并将其\\ n拆分为新行? 我想将其转换为Json数组,并且以node开头的每一行都应该是JsonObject? 我们可以在QT c ++中做到吗? 尝试过的代码:
2回复

将整数数组的内容插入QString的向量

我想将整数数组的内容: int arr[n]插入到QStrings的向量中。 std::vector<QString> vQString我可以通过将数组的元素一一插入来实现: 我更喜欢使用一个插入操作来完成操作-有什么建议吗? 谢谢