Почему не работает клик по кнопке?

Имеется кастомный виджет. Вот его код:
int RInstruments::toggle(){
    std::cout<<"toggle"<<std::endl;
    if (hide->text()=="^") hide->setText("v");
    else hide->setText("^");
    main->hide();
    return 0;
}

RInstruments::RInstruments(QWidget* parent, bool visible): QWidget(parent){
    this->instruments_visible = visible;
    QLabel* filters_l = new QLabel(this);
    filters_l->setText("Фильтры");
    filters_l->setStyleSheet("font-size:20px;");
    hide = new QPushButton(this);
    hide->setText("^");
    connect(hide, SIGNAL(released()), this, SLOT(toggle()));
    main = new RInstrumentsMain(parent);
}

Заголовок:
class RInstruments : public QWidget{
    Q_OBJECT

public:
    RInstruments(QWidget *parent = 0, bool visible = true);
public slots:
    int toggle();
protected:
    RInstrumentsMain* main;
    QPushButton* hide;
    bool instruments_visible;
};

Вместо connect(hide, SIGNAL(released()), this, SLOT(toggle())) пробовал современный синтаксис
connect(hide, &QPushButton::released, this,&RInstruments::toggle)
UPD: экспериментально выяснил, что если убрать строку main = new RInstrumentsMain(parent), то обработчик работает, но не показывается виджет RInstrumentsMain.
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@nagayev Автор вопроса
Решение нашел сам, довольно неожиданное.
Нужно задать положение для main кодом вроде main->setGeometry(100,100,600,600);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
У кнопки надо подключаться к сигналу clicked
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы