2

私は現在、さまざまなアプリケーションで使用される基本的なQTGuiテーブルに取り組んでいます。私が欲しい機能の1つは、列のヘッダーをダブルクリックして、並べ替え関数を呼び出せるようにすることです。私はオンラインでドキュメントやさまざまな投稿を調べてきましたが、全体的なアイデアを完全には把握していません。doubleClickedシグナルをhandleDoubleClickスロットに接続する必要があることは理解していますが、実際には機能していません。

例の多くは、独自のカスタムクラスの作成とそのクラスのシグナルの設定方法に言及していますが、QHeaderViewにすでにシグナルが組み込まれている場合は、それを行う必要がありますか?内蔵信号をスロットに接続する方法はありませんか?

これが基本的に私が持っているものです。

QHeaderView *headerView = mainTable->horizontalHeader();
headerView->setMovable(true);
headerView->setClickable(true);

QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), headerView, SLOT(sortByHeader()));

void sortByHeader()
{
    cout << "Double clicked";
}

解決済み:Abhijithのメソッドは機能しましたが、パラメータータイプも渡す必要があることがわかりました。したがって、構文エラーでした。

こんな感じです

Class1* myclass = new Class1();
QObject::connect(headerView, SIGNAL(sectionDoubleClicked(int)), myclass, SLOT(sortByHeader(int)));
4

1 に答える 1

0
QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), headerView, SLOT(sortByHeader()));

connect メソッドに、QHeaderview クラスに属するdoubleclickedsignalというスロットに接続するように要求しています。sortByHeaderしたがって、スロットを呼び出していません。sortByHeader()という名前の独自のクラスでスロットを定義した場合はClass1、これを行う必要があります。

Class1* myclass = new Class1();
QObject::connect(headerView, SIGNAL(sectionDoubleClicked()), myclass, SLOT(sortByHeader()));
于 2011-06-08T14:27:19.177 に答える