私はC++とQtが新しく、親クラスからウィジェットにアクセスしようとしています。C++関数から親ウィジェットにアクセスする
は、ここで私は別のクラスを持っている、と私はそのクラスに「UI」からウィジェットにアクセスしようとしています私のmainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
です。同様に:
DashBoard::DashBoard(MainWindow *parent) : QObject(parent)
{
}
void DashBoard::select()
{
parent->ui->menuSL->setCurrentIndex(0);
}
これは、方法とフィールドを解決できないというエラーが表示されます。しかし、コンストラクタにparent->ui->menuSL->setCurrentIndex(0);
という行を置くと問題はありません。
誰かが間違いを指摘しますか?
'DashBoard :: select()'関数でシグナルを送出し、 'menSL'オブジェクトの' setCurrentIndex(int) 'スロット、または' MainWindow'クラスの関数に接続する必要があります。 – thuga
私はthugaに同意します。 DashBoardから信号を発信する方が良い方法です。 – drescherjm
あなたの親の 'ui'に直接アクセスすることはお勧めしません。代わりに、あなたの子供から呼び出すことができる定義されたアクセサメソッドを持つインターフェースからあなたの親を派生させてください。コール例:dynamic_cast(parent()) - > SetMenu(0);または、信号/スロットの概念を使用します。 –
bkausbk