1

私のQMainWindowコンストラクターでは、データベースを読み取りQListWidget、アイテムを入力します。どうやらアイテムが選択されていないようなので、自分でやらなければなりません。リスト内の項目をクリックすると呼び出されるスロットもあります。

試してみsetCurrentRow( const int )ましたが、そうするとスロットが呼び出されません。関数 setCurrentIndex( const QModelIndex & ) を見たことがありますが、QModelIndex には詳しくありません。

QListWidget に最初の項目を選択してon_list_clicked(const QModelIndex& index)スロットを呼び出すように指示するにはどうすればよいですか?

編集:また、リストから特定のインデックスを削除すると、両方ともプログラムがクラッシュするcurrentRowChanged(int)ため、クリックした以外のスロットは使用できません。itemSelectionChanged()

どういうわけか、リストをクリックする必要があります...

4

1 に答える 1

5

を呼び出すと、 の代わりにを受け入れるsetCurrentRow()シグナル が送信されます。currentRowChanged()intQModelIndex

の代わりにその信号に接続するだけitemSelectionChanged()です。

サンプルコード:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->listWidget->setCurrentRow(1);
}

void MainWindow::on_listWidget_currentRowChanged(int currentRow)
{
    qDebug() << currentRow;
}
于 2013-09-03T18:29:48.153 に答える