crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как сделать(сигнал/слот)
ruzik
  опции профиля:
сообщение 13.5.2011, 18:23
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


У меня есть такая проблема есть сигнал, есть слот, сигнал принимает QString слот не отправляет ничего, как сделать так что бы при подаче этого сигнала вызывался нужный слот и туда отправилось нужное значение QString
Вот код
            connect(menuRecent_projects->actions()[a], SIGNAL(triggered()), this, 
                SLOT(openFileFromString(menuRecent_projects->actions()[a].text()))); //Вот нужный коннект

Фактически надо при нажатии нужного QAction открыть файл, а передать в слот текст этого QAction
Заранее спасибо за внимание
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.5.2011, 18:27
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Лучше почитать маны. Сразу все вопросы пропадут.

Как вариант, если я правильно понял:
connect(openAction, SIGNAL(triggered()), this, SLOT(on_openAction_triggered()));

void MainWidow::on_openAction_triggered()
{
qDebug()<<openAtion->text();
}


Сообщение отредактировал RazrFalcon - 13.5.2011, 18:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 13.5.2011, 19:56
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Мне нужно было немножко другое, но я уже сам справился
void RizekQssEditor::openFileByActionClicked()
{
openFileFromString(menuRecent_projects->activeAction()->text());
}
Но с помощью промежуточного слота, а я как раз и спрашивал как без него
Но все равно большое спасибо за помощь!

Попробовал свой вариант - выдает ошибку, странно, почему , говорит что недостаточно прав для чтения

Сообщение отредактировал ruzik - 13.5.2011, 19:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.5.2011, 20:46
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


1)
qDebug()<<menuRecent_projects->activeAction()->text()
2) Почему вы просто не пишете:
myAction->text();
Как вы его создаете?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.5.2011, 22:13
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ruzik @ 13.5.2011, 21:23) *
сигнал принимает QString слот не отправляет ничего
всё перепутал.
сигнал отправляет QString слот не принимает ничего

вот это вот:
menuRecent_projects->activeAction()->text()
неправильно.
А если нет метода activeAction(), что тогда? Как узнать у кого просить текст?

Делать надо так:
void RizekQssEditor::openFileByActionClicked()
{
    QObject *o = sender(); // Узнаем какой объект отправил сигнал (вызвал слот)
    QAction *a = qobject_cast<QAction *>(o); // попробуем привести тип этого объекта к ожидаемому (QAction)
    if (a)
        openFileFromString(a->text()); // если приведение типа удалось, то вызовим нужный метод ожидаемого объекта.
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 14.5.2011, 13:55
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Большое спасибо за помощь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.5.2020, 8:17