0

ボタンがクリックされたときに QSting と int を tableView に同時に追加するにはどうすればよいですか?

私が望むのは、最初の列に名前を、2 番目の列に数字を表示することです。ボタンがクリックされたときに、両方の項目を同じ行に追加する必要があります。

    Col 1---      Col 2--- 

    First Name    1 
    Second Name   2 
    Third Name    3

これが2つの文字列を追加するものです.2番目のセルを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);
}

どうもありがとう

4

2 に答える 2

2

それは本当に整数でなければならないのですか、それとも単に整数のように見えるのでしょうか?

通常、テーブルでは、テキストは左揃えで表示され、数値は右揃えで表示されます。2 番目の列の配置を設定することで、この効果を得ることができます。

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

プログラムの別の場所でデータを整数として使用する必要がある場合は、必要に応じて QString を整数に変換できます。

于 2013-08-02T13:11:17.143 に答える
1

わかりました、私はこの答えにすべてを集めます:

初め:

QStandardItemModel のすべてのデータは QVariant であるため、データをクエリすることができます。

  1. でモデルに

    virtual QVariant data(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 の 2 番目の要素に Int 値を求めることができることがわかります。

于 2013-08-02T14:30:40.730 に答える