gpt4 book ai didi

C++ Qt - 设置 QTableWidget 项目值

转载 作者:行者123 更新时间:2023-11-28 05:40:44 25 4
gpt4 key购买 nike

我一直在使用 Qt 中的矩阵计算器工作,遇到了以下问题。我这样做:

void ShowMatrix::updateTable()
{
int w = 323 - 305;
int h = 300 - 227 + 15;

for(int i = 0; i < matrix->getRows(); i++)
{
ui->tableWidget->insertRow(i);
h += 35;
}
for(int j = 0; j < matrix->getColumns(); j++)
{
ui->tableWidget->insertColumn(j);
w += 50;
}

this->resize(w, h);
this->setMinimumSize(w, h);

ui->retranslateUi(this);


this->setWindowTitle(matrix->getName());
emit updatingDone();

}

然后,当 updatingDone();信号发出,这个槽被启动:

void ShowMatrix::setValues()
{
QString str;
for(int i = 0; i < matrix->getRows(); i++)
for(int j = 0; j < matrix->getColumns(); j++)
{
ui->tableWidget->item(i, j)->setText("1");
}
ui->retranslateUi(this);
}

我只想将所有单元格值设置为一个。我不能对项目做任何事情,我试图对它们做的一切,比如设置标志、值等,都会使我的应用程序崩溃。如果我不发出 updatingDone() 信号,一切正常。

最佳答案

你可以尝试使用这个插槽:

void ShowMatrix::setValues()
{
QString str;
for(int i = 0; i < matrix->getRows(); i++)
for(int j = 0; j < matrix->getColumns(); j++)
{
QTableWidgetItem *item = ui->tableWidget->item(i, j);
if(!item) {
item = new QTableWidgetItem();
ui->tableWidget->setItem(i, j, item);
}
item->setText("1");
}
ui->retranslateUi(this);
}

因此,当您向表格小部件添加新行和/或列时,那些添加的单元格仍然为空。因此,您需要首先使用 QTableWidget->setItem 将 QTableWidgetItem 放入这些单元格中。

关于C++ Qt - 设置 QTableWidget 项目值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37150457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com