Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Создать действие для кнопки Qt Creator  (Прочитано 29777 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bebeka

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • http://citaty.pp.ua
    • Просмотр профиля
    • Цитатник
Есть main.cpp:

#include <QtCore>
#include <QtGui>

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);
    QDialog *dialog = new QDialog;
    dialog->resize(320, 240);

QPushButton *button = new QPushButton("Press me", dialog);
button->move(100, 100);

    dialog->show();

    return app.exec();
}

как сделать для кнопки (button) действие click? чтобы открывался типа файл test.sh. Или архив ...

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #1 : 13 Июня 2010, 20:37:12 »
Как вариант, создать свой класс, унаследовать его от QPushButton, создать в нем слот on_click(), который будет выполнять нужное действие и связать сигнал click() и слот.

Оффлайн bebeka

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • http://citaty.pp.ua
    • Просмотр профиля
    • Цитатник
Re: Создать действие для кнопки Qt Creator
« Ответ #2 : 13 Июня 2010, 22:47:41 »
Как вариант, создать свой класс, унаследовать его от QPushButton, создать в нем слот on_click(), который будет выполнять нужное действие и связать сигнал click() и слот.


Я как раз это и пробовал делать не вышло у меня. Может быть есть язык программирование чтобы создавать программы быстрее, что-то типа как в delphi.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #3 : 13 Июня 2010, 22:57:11 »

Оффлайн vanish

  • Любитель
  • *
  • Сообщений: 70
  • Life Is Good
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #4 : 14 Июня 2010, 02:32:21 »
как по мне так лучше использовать сигналы и слоты. что то типо connect(button,SIGNAL(click()),ClassName,SLOT(YourSlot))

Оффлайн AlexH

  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #5 : 14 Июня 2010, 09:20:06 »
В qt-designere вообще-то это 2-мя кликами делается...
arch x86_64

aleman

  • Гость
Re: Создать действие для кнопки Qt Creator
« Ответ #6 : 14 Июня 2010, 09:27:15 »
2мя кликами это делается в Qt Creator

Оффлайн AlexH

  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #7 : 14 Июня 2010, 09:59:33 »
Цитировать
2мя кликами это делается в Qt Creator
Это я и имел ввиду
arch x86_64

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #8 : 14 Июня 2010, 12:20:49 »
В Qt всё делается очень просто. Открывается документация, раздел How to Learn Qt и последовательно читается на протяжении пары часиков с обходом ссылок. После этого такие вопросы как этот не возникают как класс.

ТС ознакомься с объектной моделью Qt в особенности с понятиями сигналов и слотов и всё станет ясно.

Несколько советов:

1 QDialog не предназначен для использования в качастве головного окна. Для этих целей есть QWidget. В твоём случае лучше можно просто заменить тип переменной dialog на QWidget. Разница в том, что диалоги имеют свой EventLoop в отдельном потоке. Ты это свойство не используешь, так зачем же тогда использовать более тяжеловесный класс.

2 Для запуска внешней программы используй класс QProcess http://doc.trolltech.com/4.6/qprocess.html

Оффлайн bebeka

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • http://citaty.pp.ua
    • Просмотр профиля
    • Цитатник
Re: Создать действие для кнопки Qt Creator
« Ответ #9 : 14 Июня 2010, 19:16:14 »
В qt-designere вообще-то это 2-мя кликами делается...

По-подробнее. Библиотека стоит у меня.
« Последнее редактирование: 14 Июня 2010, 19:24:32 от bebeka »

Оффлайн AlexH

  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #10 : 14 Июня 2010, 20:20:12 »
Цитировать
По-подробнее. Библиотека стоит у меня.
Внимательно смотрим на рис просланный т. aleman. Там как раз мышиный курсор стоит в позиции 2-го клика
« Последнее редактирование: 14 Июня 2010, 20:22:29 от AlexH »
arch x86_64

Оффлайн bebeka

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • http://citaty.pp.ua
    • Просмотр профиля
    • Цитатник
Re: Создать действие для кнопки Qt Creator
« Ответ #11 : 14 Июня 2010, 20:32:02 »
Цитировать
По-подробнее. Библиотека стоит у меня.
Внимательно смотрим на рис просланный т. aleman. Там как раз мышиный курсор стоит в позиции 2-го клика

Да вижу.


Я наглый конечно, но не могли бы Вы сделать пример для меня ? у меня что-то не получается, просто по примерам лучше учить.

Буду очень благодарен!

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #12 : 14 Июня 2010, 20:55:41 »
Не поверишь, в стандартной документации идущей с библиотекой есть пару десятков подробно разобранных примеров ;)

http://doc.trolltech.com/4.6/examples.html

Проверь, что у тебя стоит QtAssistant если нет, то установи его он отвечает примерно на 150%-200% возникающих при работе с Qt вопросов.

Оффлайн bebeka

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • http://citaty.pp.ua
    • Просмотр профиля
    • Цитатник
Re: Создать действие для кнопки Qt Creator
« Ответ #13 : 14 Июня 2010, 21:09:57 »
Не поверишь, в стандартной документации идущей с библиотекой есть пару десятков подробно разобранных примеров ;)

http://doc.trolltech.com/4.6/examples.html

Проверь, что у тебя стоит QtAssistant если нет, то установи его он отвечает примерно на 150%-200% возникающих при работе с Qt вопросов.

Я конечно извиняюсь, но я там не нашел примера с использованием файла ui. :)

Оффлайн HolyMacaroni

  • Участник
  • *
  • Сообщений: 210
  • мегавольт
    • Просмотр профиля
Re: Создать действие для кнопки Qt Creator
« Ответ #14 : 14 Июня 2010, 21:55:24 »
2bebeka: что бы перейти или создать функцию-обработчик сигнала, например нажатия кнопочки, надо нажать правой кнопочкой на собственно кнопке в форме:), появится меню, в нем выбрать "перейти к слоту", появиться окошечко, там виберешь событие(clicked(),...)выбираешь нужное, например первое и тебя перемещают в функцию-обработчик данного сигнала. Виджеты, которые созданы в формах находятся в объекте ui , например :
 ui->pushButton->resize(30,60);


ПС: я тут не заметил, что у тебя нет Qt Creator, тогда стоит установить если хочешь таскать кнопки:) (sudo apt-get install qtcreator)
« Последнее редактирование: 14 Июня 2010, 22:10:17 от HolyMacaroni »
Asus X50N Ubuntu 10.04

 

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