Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
magrif
3 / 3 / 1
Регистрация: 01.11.2011
Сообщений: 156
#1

Передача параметров по сигналу clicked() от QPushButton - C++ Qt

29.03.2014, 21:51. Просмотров 2252. Ответов 9
Метки нет (Все метки)

При работе вызываем функцию-слот, представленную ниже:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void MainWindow:: openEditDialog()
{
    QDialog* dlg = new QDialog(this);
    QLineEdit* lineSquare = new QLineEdit();
    QPushButton* buttonAdd = new QPushButton(tr("add"));
    QVBoxLayout* vlo = new QVBoxLayout();
 
    vlo->addWidget(lineSquare);
    vlo->addWidget(buttonAdd);
 
    dlg->setLayout(vlo);
 
    //connect(buttonAdd , SIGNAL( clicked() ), this, SLOT( myEdit() ) );
 
    dlg->exec();
}
Не могу понять, каким способом организовать передачу значения lineSquare->text() (и каких-либо других при надобности) в функцию-слот myEdit()?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2014, 21:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача параметров по сигналу clicked() от QPushButton (C++ Qt):

Переопределение сигнала clicked для QPushButton (PySide) - C++ Qt
В моей проге парсится xlm файл в котором заложены пользовательские элементы для добавления в некий графический редактор. Что бы эти...

передача параметров в коннект - C++ Qt
Здравствуйте. скажите, можно ли передавать как-нибудь параметры в SLOT? дело в том, что мне нужно при нажатии кнопки читать из...

Таблица и передача параметров - C++ Qt
Здравствуйте, помогите разобраться. Считываю из базы таблицу, изменяю её в окне приложения, по нажатию на кнопку открывается новое...

QGraphicsScene и передача параметров - C++ Qt
Здравствуйте, возникли сложности ка передать параметры в класс, в общем вот такой код //Mainwindow.h #ifndef MAINWINDOW_H ...

Передача параметров в слот - C++ Qt
Сколько ни копался, ничего не нашел. Как при нажатии кнопки взять значение из LineEdit и передать его в слот, где он занесется в...

Передача параметров в программу - C++ Qt
Приветствую! Пишу приложение на Qt для Windows 7 и возникла проблема с русским языком. С помощью QTextCodec'а сделал нормальную поддержку...

9
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 22:03 #2
Делайте свой сигнал, с параметрами. Пдключайте его к сигналу clicked(). Свой сигнал подключайте к слоту myEdit().
0
magrif
3 / 3 / 1
Регистрация: 01.11.2011
Сообщений: 156
29.03.2014, 22:19  [ТС] #3
C++ (Qt)
1
2
connect(buttonAdd , SIGNAL( clicked() ), this, SIGNAL( mySignal(QString)) );
connect(this, SIGNAL( mySignal(QString) ), this, SLOT( myEdit(QString) ) );
А где передать значение в
C++ (Qt)
1
mySignal(QString)
?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 22:37 #4
Значит делайте слот, в котором будет отсылаться mySignal(QString), подключайте этот слот к сигналу clicked(). При отсылке сигнала mySignal(QString) передавайте параметром lineSquare->text().
0
magrif
3 / 3 / 1
Регистрация: 01.11.2011
Сообщений: 156
29.03.2014, 22:58  [ТС] #5
C++ (Qt)
1
2
3
4
5
6
7
public slots:
 void mySlot(QString str)
 {
     emit mySignal(QString str);
 }
signals: 
     void mySignal(QString);
Цитата Сообщение от alsav22 Посмотреть сообщение
При отсылке сигнала mySignal(QString) передавайте параметром lineSquare->text().
Вот как lineSquare->text() передать в openEditDialog() при нажатии, вот именно это понять не могу
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 23:08 #6
Значение lineSquare->text() можете получить?
0
magrif
3 / 3 / 1
Регистрация: 01.11.2011
Сообщений: 156
29.03.2014, 23:17  [ТС] #7
В пределах функции openEditDialog() только
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2014, 23:26 #8
Цитата Сообщение от magrif Посмотреть сообщение
В пределах функции openEditDialog() только
Решение вытекает из ответа. Объявляйте lineSquare не в функции, а в классе. В функции инициализируйте.

Добавлено через 2 минуты
В слоте не нужен параметр, его задача только сигнал с параметром отправить:
C++
1
2
3
4
void mySlot()
{
    emit mySignal(lineSquare->text());
}
1
magrif
3 / 3 / 1
Регистрация: 01.11.2011
Сообщений: 156
29.03.2014, 23:29  [ТС] #9
Я так в своей работе и делал.
Вот интересно и стало, можно ли информацию из локальных переменных передавать, и как это реализуется. Сам не додумал.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.03.2014, 00:24 #10
Цитата Сообщение от magrif Посмотреть сообщение
можно ли информацию из локальных переменных передавать
Передать можно (например, просто отослать из функции сигнал с параметром, или использовать invokeMethod()), но тут задача сложнее: передать по сигналу. Обработку сигнала можно разместить только вне функции, а значит там должно быть известно значение локальной переменной. Поэтому: или переменную делать нелокальной, или, после инициализации локальной переменной, передать её значение в нелокальную переменную, которую потом использовать при обработке сигнала.
1
30.03.2014, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 00:24
Привет! Вот еще темы с ответами:

Сигнал-слот, передача параметров - C++ Qt
День добрый, у меня был опыт работы с сигналами и слотами, но ни разу не было случаи когда нужно передавать параметры, объясните...

Передача параметров между формами Qt - C++ Qt
Здравствуйте. У меня есть 2 окна - одно MainWindow из которого вызывается окно Widget' а. В Widget происходит ввод текста. Мне необходимо...

Передача параметров для бинарника - Кроссплатформенная разработка
Всем привет, подскажите такую вещь, у меня есть бинарник написанный на с++, который принимает в качестве аргументов изображения, выглядит...

Передача аргументов/параметров дочернему приложению - C++ Qt
При запуске дочернего приложения (запускает его родительское, по нажатию на кнопку) void MainWindow::on_btn_add_clicked() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru