Russian Qt Forum
Май 03, 2024, 15:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигнал нажатия клавиши  (Прочитано 5702 раз)
jatsuk
Гость
« : Сентябрь 11, 2011, 11:43 »

Добрый день

Нужно чтобы при входе в программу сразу нажималась кнопка m_ui->activon (это обычный pushbutton)

Я так понял,что нужно испусть такой сигнал...
Единственное, что я нашел - это то что испускаются сигналы с помощью emit
Думал будет что то типа.... emit m_ui->activon->clicked();
Нифига не работает  Грустный

Плз не судите строго и не кидайте ссылку на эту статью с сигналами и слотами...я уже её читал и не раз
Записан
acidburst
Гость
« Ответ #1 : Сентябрь 11, 2011, 11:52 »

ui->pushButton->click()

может быть так?
Записан
jatsuk
Гость
« Ответ #2 : Сентябрь 11, 2011, 12:00 »

Спасибо вот так работает
m_ui->activon->click();
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Сентябрь 11, 2011, 12:19 »

а не проще напрямую вызвать слот, привязанный к этой кнопке?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
jatsuk
Гость
« Ответ #4 : Сентябрь 11, 2011, 12:42 »

а не проще напрямую вызвать слот, привязанный к этой кнопке?

Если не трудно, то подскажите как ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Сентябрь 11, 2011, 12:54 »

у тебя где-то должна присутствовать такая строчка:
Код
C++ (Qt)
connect(m_ui->activon, SIGNAL(clicked()), this, SLOT(myslot()));
вот вызов m_ui->activon->click(); заменить на myslot();

конечно, если на кнопку повешено более одного слота, то лучше вызвать m_ui->activon->click();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
jatsuk
Гость
« Ответ #6 : Сентябрь 11, 2011, 15:12 »

спс, попробую

Получилась такая ерунда...
Есть два поля и их сверяем

Есть LineEdit, туда сначала с реестра добавляются данные через Qsetting сделано....
Код:
QString pcod= setting.value("/Settings/cod","").toString();
    m_ui->serialproc->setText(pcod);
А потом сразу сигнал нажатия кнопки

Код:
 m_ui->activon->click(); 

Так проблема в том, что когда уже нажалась кнопка - данные в LineEdit ещё не появились (QMessageBox ошибка данные не совпадают)

Но когда закрываю QMessageBox, то вижу,что данные уже есть, и при повторном нажатии клавиши (Уже руками, то всё совпадает )

Вопрос Непонимающий в чем причина ? может есть что то типа задержки и поэтому такая ерунда

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #7 : Сентябрь 11, 2011, 15:32 »

Код
C++ (Qt)
QString pcod= setting.value("/Settings/cod","").toString();
m_ui->serialproc->setText(pcod);
QApplication::processEvents(); // а вот если в следующей строчке вызывать слот, соединенный с кнопкой, то эта строка не понадобится
m_ui->activon->click();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #8 : Сентябрь 11, 2011, 18:43 »

// а вот если в следующей строчке вызывать слот, соединенный с кнопкой, то эта строка не понадобится
И где по вашему мы в цикл обработки событий попадём, вызывая слот как функцию?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #9 : Сентябрь 11, 2011, 20:25 »

мне почему-то так всегда казалось Улыбающийся (да, не слишком убедительный ответ)

хотя вот следующий проект не имеет никакой "задержки":
Код
C++ (Qt)
Widget::Widget(QWidget *parent) : QWidget(parent)
{
   ui.setupUi(this);
 
   connect(ui.pushButton, SIGNAL(clicked()), SLOT(click()));
 
   ui.lineEdit->setText(qApp->applicationDirPath());
   ui.pushButton->click();
}
 
void Widget::click()
{
   qDebug("%s", qPrintable(ui.lineEdit->text()));
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
jatsuk
Гость
« Ответ #10 : Сентябрь 12, 2011, 13:47 »

Нашел причину всех зависаний... в первой LineEdit вычислялся ассемблер код, результат которого к тому времени еще не успел записаться в LineEdit.
Теперь ошибку не выдает.

Но новая проблема форма от этого псевдонажатия не закрывается !!! Кнопка срабатывает, условия тоже, заходит в условие и проходит строчку... Dialog::close();

Если после этого нажать снова кнопку вручную, то всё нормально ! форма закрывается
Нифига не пойму мистика

Код:
if (passw==uppassstr) { //Сравнивает 2 строки (Все отлично теперь, в условие заходит)

bool povt= setting.value("/Settings/reactiv", false).toBool();//Первый ли раз ли программа активирована (Просто переменная)

      if(!povt){ // Суда уже не заходит т.к. переменная True (так и должно быть)
       //Если первый раз
       QMessageBox::information(this, tr("Активация"), tr("Продукт успешно активирован") );
       setting.setValue("/Settings/cod",passw);// Сохранить код в реестр
        setting.setValue("/Settings/reactiv",true);
       }

       Dialog::close();// А здесь НЕ ЗАКРЫВАЕТ !
   }

   else {QMessageBox::warning(this, tr("Ошибка"), tr("Неверный ключ активации") );}

Записан
jatsuk
Гость
« Ответ #11 : Сентябрь 12, 2011, 14:20 »

Я тут поразмыслил...
Может Форма не может закрыться, потому что ещё программа то не загрузилась а, она сразу закрывается...
Ну или что то типо этого.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.305 секунд. Запросов: 22.