crossplatform.ru

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


  Ответ в Как сделать(сигнал/слот)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ruzik Дата 14.5.2011, 13:55
  Большое спасибо за помощь!
Litkevich Yuriy Дата 13.5.2011, 22:13
 
Цитата(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()); // если приведение типа удалось, то вызовим нужный метод ожидаемого объекта.
}
RazrFalcon Дата 13.5.2011, 20:46
  1)
qDebug()<<menuRecent_projects->activeAction()->text()
2) Почему вы просто не пишете:
myAction->text();
Как вы его создаете?
ruzik Дата 13.5.2011, 19:56
  Мне нужно было немножко другое, но я уже сам справился
void RizekQssEditor::openFileByActionClicked()
{
openFileFromString(menuRecent_projects->activeAction()->text());
}
Но с помощью промежуточного слота, а я как раз и спрашивал как без него
Но все равно большое спасибо за помощь!

Попробовал свой вариант - выдает ошибку, странно, почему , говорит что недостаточно прав для чтения
RazrFalcon Дата 13.5.2011, 18:27
  Лучше почитать маны. Сразу все вопросы пропадут.

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

void MainWidow::on_openAction_triggered()
{
qDebug()<<openAtion->text();
}
ruzik Дата 13.5.2011, 18:23
  У меня есть такая проблема есть сигнал, есть слот, сигнал принимает QString слот не отправляет ничего, как сделать так что бы при подаче этого сигнала вызывался нужный слот и туда отправилось нужное значение QString
Вот код
            connect(menuRecent_projects->actions()[a], SIGNAL(triggered()), this, 
                SLOT(openFileFromString(menuRecent_projects->actions()[a].text()))); //Вот нужный коннект

Фактически надо при нажатии нужного QAction открыть файл, а передать в слот текст этого QAction
Заранее спасибо за внимание
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 21:52