Tôi mới dùng C++ và Qt và tôi đang cố gắng truy cập một tiện ích con từ một lớp cha.C++ truy cập các tiện ích con từ một hàm
Đây là mainwindow.cpp tôi
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
Tôi có một lớp khác, và tôi đang cố gắng để truy cập vào một widget từ "ui" trong lớp đó. Giống như vậy:
DashBoard::DashBoard(MainWindow *parent) : QObject(parent)
{
}
void DashBoard::select()
{
parent->ui->menuSL->setCurrentIndex(0);
}
Điều này cho tôi lỗi khi nói rằng các phương pháp và trường không thể giải quyết được. Nhưng khi tôi đặt dòng parent->ui->menuSL->setCurrentIndex(0);
trong hàm tạo, không có vấn đề gì.
Có ai vui lòng chỉ ra sai lầm của tôi không?
Bạn nên phát ra tín hiệu trong chức năng 'DashBoard :: select()' và kết nối nó với khe 'setCurrentIndex (int)' của đối tượng 'menSL' của đối tượng', hoặc vào một hàm trong lớp 'MainWindow' của bạn. – thuga
Tôi đồng ý với thuga. Phát ra tín hiệu từ DashBoard là một cách tiếp cận tốt hơn. – drescherjm
Tôi sẽ không khuyên bạn truy cập trực tiếp vào 'ui' của cha mẹ bạn. Thay vào đó, lấy được cha mẹ của bạn từ một giao diện với các phương thức truy cập xác định có thể được gọi từ con bạn. Ví dụ: dynamic_cast (parent()) -> SetMenu (0); Hoặc sử dụng khái niệm tín hiệu/khe. –
bkausbk