Qt4 SegmentationFault在QTableWidget :: setItem上

时间:2013-03-28 12:35:58

标签: c++ qt4 qtablewidget

我这里有一个非常奇怪的问题。当我将项目设置为表格时,我的程序为SegmentationFault。这是我的代码。

部首:

class Program : public QMainWindow {
    Q_OBJECT
    public:
        Program();

    private:
        QTableWidget *table;

    private slots:
        void newSlot();
}

Cpp文件:

Program::Program() : QMainWindow() {
    ....
    ....
    ....
    ....
    table = new QTableWidget();
    table->setRowCount( 0 );
    table->setColumnCount( 2 );
    ....
    ....
    ....
}

void Program::newSlot() {
    ....
    ....
    ....
    table->insertRow( table->rowCount() );
    table->setItem( table->rowCount() - 1, 0, new QTableWidgetItem( "something" ) );
    table->setItem( table->rowCount() - 1, 1, new QTableWidgetItem( "something" ) );
    ....
    ....
    ....
}

问题是当程序到达table->setItem( ... )中的newSlot()时,我遇到了分段错误。我在某个地方犯了一些愚蠢的错误导致了这个烂摊子吗? '因为我在其他地方使用了完全相同的代码而没有任何问题。

1 个答案:

答案 0 :(得分:1)

您必须指定列数:

table->setColumnCount( 2 );

要做

table->setItem( table->rowCount() - 1, 0, new QTableWidgetItem( "something" ) );
...