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

Фактически надо при нажатии нужного QAction открыть файл, а передать в слот текст этого QAction
Заранее спасибо за внимание
RazrFalcon
Лучше почитать маны. Сразу все вопросы пропадут.

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

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

Попробовал свой вариант - выдает ошибку, странно, почему , говорит что недостаточно прав для чтения
RazrFalcon
1)
qDebug()<<menuRecent_projects->activeAction()->text()
2) Почему вы просто не пишете:
myAction->text();
Как вы его создаете?
Litkevich Yuriy
Цитата(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
Большое спасибо за помощь!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.