Russian Qt Forum
Июнь 29, 2017, 19:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Вопросы новичков / Re: простая задача : Январь 11, 2017, 18:52
Спасибо, помогло. Про очистку памяти не понял. Когда удаляется экземпляр класса разве не удаляется все его элементы?
2  Qt / Вопросы новичков / Re: простая задача : Январь 11, 2017, 18:13
increase принимает параметр, а у clicked его нет. Убери у слота параметр.


Не помогло.
Вопрос остается в силе. Как слот с сигналом соединить в любой книге написано. А что делать если мне самому надо установить значение в прогрессбаре или просто самому передать какое-либо значение в слот? Нигде этого не видел, хотя задача простейшая, у всех должна возникать в самом начале.
3  Qt / Вопросы новичков / простая задача : Январь 11, 2017, 17:36
Здравствуйте. Программа простая - кнопка и прогрессбар на форме, при нажатии на кнопку на единицу увеличивается значение, которое отображает прогрессбар. Для этого я создаю собственный слот increase, который увеличивает на единицу переменную count, и подключаю его к сигналу нажатия кнопки. В слоте increase вызываю сигнал set_pos, который связываю с слотом setValue прогрессбара. Все это не работает, не могу понять почему.

win.h
Код:
#ifndef WIN_H
#define WIN_H
#include <QWidget>
#include <QtWidgets>

class win : public QWidget
{
public:
    win(QString str);

    QProgressBar *pgb1;
    QPushButton *btn_plus;
    QVBoxLayout *lay_main;

    int count;

signals:
    void set_pos(int);
public slots:
    void increase(bool);
};

#endif // WIN_H

win.cpp
Код:
#include "win.h"

win::win(QString str)
{
    setWindowTitle(str);

    pgb1 = new QProgressBar;
    pgb1->setOrientation(Qt::Vertical);
    btn_plus = new QPushButton("+");
    lay_main = new QVBoxLayout;

    lay_main->addWidget(pgb1);
    lay_main->addWidget(btn_plus);

    setLayout(lay_main);

    QObject::connect(btn_plus, SIGNAL(clicked()), this, SLOT(increase()));
    QObject::connect(this, SIGNAL(set_pos(int)), pgb1, SLOT(setValue(int)));
}

void win::increase(bool)
{
    count++;
    emit set_pos(count);
}

void win::set_pos(int)
{

}

main.cpp
Код:
#include <QApplication>
#include <QtWidgets>
#include "win.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    win win1("This is a window");
    win1.show();

    return app.exec();
}
Страниц: [1]
Страница сгенерирована за 0.05 секунд. Запросов: 24.