如何在单击按钮时将字符串和int添加到QTableView

How to add a string and an int to a QTableView when a button is clicked

本文关键字:int 添加 QTableView 字符串 单击 按钮      更新时间:2023-10-16

单击按钮时,如何将QSting和int同时添加到tableView?

我想要的是第一列有名字,第二列有数字。单击按钮时,需要在同一行添加两个项目。

    Col 1---      Col 2--- 
    First Name    1 
    Second Name   2 
    Third Name    3

这是我添加两个字符串的方法,如何将第二个单元格转换为int?

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QStandardItemModel();
    model->setRowCount(0);
    ui->tableView->setModel(model);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButton_clicked()
{
    QStandardItem *userName = new QStandardItem(ui->lineEdit_Name->text());
    QStandardItem *userNumber = new QStandardItem(ui->lineEdit_Number->text());
    QList<QStandardItem*> row;
    row <<userName << userNumber;
    model->appendRow(row);
}

非常感谢

它真的必须是一个整数吗?或者它看起来像一个整数?

传统上,在表格中,文本显示为左对齐,数字显示为右对齐。你可以通过设置第二列的对齐方式来获得这种效果:

QStandardItem *userNumber = new QStandardItem(ui->lineEdit_Number->text());
userNumber->setAlignment(Qt::AlignRight | Qt::AlignVCenter);

如果您需要在程序中的其他地方将数据用作整数,您可以在需要时将QString转换为整数。

好的,我将收集所有答案:

第一:

QStandardItemModel中的每个数据都是QVariant,因此您可以查询中的数据

  1. 到具有的模型

    虚拟QVariant数据(const QModelIndex&index,int role=Qt::DisplayRole)const

  2. 到QStandardItem,带有:

    虚拟QVariant数据(int role=Qt::UserRole+1)const

两者都将返回一个QVariant。你可以用得到int

int toInt(bool * ok = 0) const

请注意,bool是可选的,但如果转换是可行的,它将返回true。

此外,您可以检查它是否可以转换为int:

bool QVariant::canConvert(int targetTypeId) const
yourVariant.canConvert( QMetaType::Int ) should return true.

为了得到你想要的。我会使用QStandardItemModel:中的takeRow方法

 QList<QStandardItem *> takeRow(int row)

这与附加行的操作相反。因此,您可以向返回的QList的第二个元素询问Int值。