如何在单击按钮的同时向tableView添加QSting和int?
我想要的是让第一列包含名称,第二列包含数字。单击按钮时,两个项目都需要添加到同一行。
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);
}
非常感谢
答案 0 :(得分:2)
它真的必须是一个整数还是只是一个整数?
传统上,在表格中,文本左对齐显示,数字右对齐显示。您可以通过设置第二列的对齐来获得此效果:
QStandardItem *userNumber = new QStandardItem(ui->lineEdit_Number->text());
userNumber->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
如果您需要在程序中的其他位置使用数据作为整数,则可以在需要时将QString转换为整数。
答案 1 :(得分:1)
好的,我将收集所有答案:
首先:
QStandardItemModel中的每个数据都是QVariant,因此您可以查询数据
带
的模型虚拟QVariant数据(const QModelIndex&amp; index,int role = Qt :: DisplayRole)const
带有:
到QStandardItem虚拟QVariant数据(int role = Qt :: UserRole + 1)const
两者都将返回QVariant。您可以使用
获取intint 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值。