wxGrid を並べ替えようとしています。現在、ドキュメントによると、並べ替えはサポートされていませんが、イベントは生成されるとのことです。このドキュメントは、イベントが呼び出されていることを示していますwxEVT_GRID_COL_SORT
。けっこうだ!
さて、問題は、イベントを機能させる方法がわからないことです。フレームのイベント テーブルは次のようになります。
BEGIN_EVENT_TABLE(MainWindow, wxFrame)
EVT_BUTTON(XRCID("toevoegknop"), MainWindow::openAddWindow)
// A few other events that work
END_EVENT_TABLE()
そこにリストされているイベントは、すでに完全に正常に機能しています。MainWindow クラスで関数を宣言しました。
void sortColumn(wxGridEvent& event);
wxEVT_GRID_COL_SORT
今、私はそのイベントを追加したいと思います。私の観点からすると、ドキュメンテーションは私が何をすべきかについてあまり明確ではないので、イベントテーブルに次の行を追加してイベントを追加しようとしました.
wxEVT_GRID_COL_SORT(MainWindow::sortColumn)
構文エラーが発生するため、正しくありません。他のイベントが EVT で始まったばかりであることに気付いたので、wx を削除しようとしましたが、まだ運が悪いです。
インターネットを広く検索すると、フレームのコンストラクター (私の場合は MainWindow) に次の行を追加してイベントを処理するペーストビンの投稿にたどり着きました。
Grid->Connect(wxEVT_GRID_COL_SORT,(wxObjectEventFunction)&Frame::OnGridColSort);
私はこのように適応しました(MainWindowのほぼ全体のコンストラクター)
MainWindow::MainWindow(const wxString& title, const wxPoint& pos, const wxSize& size, Collection* library, MovieDB* database)
: wxFrame(), library_(library), database_(database) {
wxXmlResource::Get()->LoadFrame(this, NULL, _T("hoofdvenster"));
SetSize(size);
grid_ = (wxGrid *)FindWindowById(XRCID("filmtabel"));
// Irrelevant code removed, setting up the grid labels etc.
grid_->Connect(wxEVT_GRID_COL_SORT,(wxObjectEventFunction)&MainWindow::sortColumn);
}
エラーが発生します:
'wxEVT_GRID_COL_SORT' はこのスコープで宣言されていません
だから今、私は他に何を試すことができるのかわかりません。私は数日前に wxWidgets をいじり始めたばかりなので、wxWidgets ユーザーにとって些細なことは私には向いていないかもしれないことを覚えておいてください。
前もって感謝します!