Работа с объектами UI в другом классе Qt

443
07 июля 2017, 06:53

Хочу напрямую обращаться к элементам интерфейса, содержащихся в Ui MainWindow. Как это реализовать, не используя сигналы и слоты? Мне нужно передать ссылку на ui или вроде того.

Answer 1

Просто сделайте метод для доступа к ui

namespace Ui {
    class MainWindow;
}
class MainWindow : public QMainWindow{
public:  
    Ui::MainWindow *ui() const{
        return _ui;
    }
private:
    Ui::MainWindow *_ui;
};

Однако я бы все же посоветовал вам не обращаться к виджетам напрямую. Если вы решите изменить внешний вид MainWindow или отказаться от _ui, то вам придется вносить изменения во всей программе. Лучше будет сделать методы, которые будут манипулировать _ui. Примерно так:

class MainWindow : public QMainWindow{
public:  
    void setAge(int age){
        _ui->ageInput->setValue(age);
    }
    int age() const{
        return _ui->ageInput->value();
    }
    void setName(const QString &name){
        _ui->nameInput->setText(name);
    }
    QString name() const{
        _ui->nameInput->text();
    }
private:
    Ui::MainWindow *_ui;
};
READ ALSO
Поиск по паре ключ-значение

Поиск по паре ключ-значение

Имеется список на multimap пара ключ-значениеВ списке присутствуют не уникальные значения

295
Get playback devices

Get playback devices

Необходимо программно понять, подключено ли какое-то устройство воспроизведения к аудиовыходуИспользуется linux (МСВС)

245
Преобразование типов в с++. Из int в string

Преобразование типов в с++. Из int в string

Каким способами можно выполнить преобразование из инта в строку?

392