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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как переопределить методы??? (при создании в дизайнере)  (Прочитано 6204 раз)
Racot
Гость
« : Ноябрь 29, 2011, 19:02 »

Вот я сделал новый проект в QtCreator --- Qt Widget->GUI приложение... кидаю пару кнопок на форму....создаются две кнопки класса QPushButton.....но и метод у них один......((((  и не пойму как мне переопределить методы этих кнопок....сделать их разными..........нет я конечно понимаю что можно унаследовать этот QPushButton ручками и всё сделать самому......но неужели нельзя как то автоматом как в Builder C++........или надо пользоваться фильтрами событий что бы разделить события двух объектов?Непонимающий.........хелп плиз......((( Обеспокоенный
 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Ноябрь 29, 2011, 19:24 »

что значит "метод у них один"?
Записан

Изучением 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
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Ноябрь 29, 2011, 19:36 »

1) Ресурсы - великая фича всех времен и народов
2) Чужой код вставленный в Ваш = всегда кал

Думайте
Записан
Racot
Гость
« Ответ #3 : Ноябрь 29, 2011, 19:39 »

Цитировать
что значит "метод у них один"?

в смысле что они от одного класса и метод этого класса для обоих объектов один......

Записан
Racot
Гость
« Ответ #4 : Ноябрь 29, 2011, 19:43 »

ну он же функция-член)
Записан
iroln
Гость
« Ответ #5 : Ноябрь 29, 2011, 19:50 »

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Ноябрь 29, 2011, 20:29 »

ТС, если озвучишь какую ты конечную цель преследуешь, может станет проще помочь
Записан

Изучением 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
Rem Norton
Гость
« Ответ #7 : Ноябрь 30, 2011, 01:40 »

Рискну предположить, что вопрошавший перепутал сигнал с методом. Если это так, то спасет только изучения азов Qt. Ну или найти кого нибудь с опытом и большим количеством свободного времени для организации ликбеза.
Записан
Racot
Гость
« Ответ #8 : Ноябрь 30, 2011, 17:49 »

Да уж наверно я как то не очень ясно выразился.....ещё одна попытка))

делаю GUI проект на основе  MainWindow. Кладу на форму 2 кнопки.
В файле ui_mainwindow.h следующее:

class Ui_MainWindow
{
public:
    QWidget *centralWidget;
    QPushButton *pushButton;
    QPushButton *pushButton_2;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindow)
    {
        ..................
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
       ...............
    } // retranslateUi

};


Мне нужно (К ПРИМЕРУ!!!) что бы при нажатии ПРАВОЙ кнопкой мыши на одну кнопку - делалось одно (выполнялся один  обработчик событий) а при нажатии на другую- другой обработчик. 
 
Сигналы и слоты сдесь вроде как не катят......я так понимаю только обработка событий.....(сигнылы понимают только что было нажатие а какой кнопкой не воспринимают)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Ноябрь 30, 2011, 18:16 »

можно попробовать считывать нажатую кнопку через QApplication::mouseButtons(), но вроде ж сигнал не отправляется при нажатии на кнопку правой кнопкой мыши? в общем если нет, тогда или eventFilter или унаследуйся от QPushButton и добавь там сигнал при нажатии на кнопку правой кнопкой мыши.
Записан

Изучением 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
Racot
Гость
« Ответ #10 : Ноябрь 30, 2011, 18:45 »

Цитировать
но вроде ж сигнал не отправляется при нажатии на кнопку правой кнопкой мыши?
да вот и я о том же....... ну теперь вроде понятно что только фильтрами или наследовать......но вроде это как то не очень удобно......я думал как то попроще........

хотя на другом форуме мне так посоветовали -
Цитировать
В классе управления формой нужно делать 2 слота. И в конструкторе их необходимо подключить к сигналу clicked() соответствующих кнопок.

щас вот думаю как это провернуть.........

Всё равно большое спасибо!!!)))
Записан
iroln
Гость
« Ответ #11 : Ноябрь 30, 2011, 19:49 »

Цитировать
(сигнылы понимают только что было нажатие а какой кнопкой не воспринимают)
Странно вы как-то понимаете механизм работы сигналов/слотов. У каждого экземпляра кнопки свои собственные сигналы, которые высылаются если с этими экземплярами что-то делают. Они никак не зависимы друг от друга.
Записан
Racot
Гость
« Ответ #12 : Ноябрь 30, 2011, 20:32 »

Сигналы и слоты есть не на все события.......если ткнуть правой кнопкой мыши над кнопкой - никакой сигнал не полетит.......а обработчик событий может перехватить....... вот что я имел ввиду....)
Записан
iroln
Гость
« Ответ #13 : Ноябрь 30, 2011, 21:45 »

Racot
Вас фиг поймёшь, вы так пишете, что трудно понять, в чём проблема заключается.

В этом случае проще и удобнее всего использовать фильтр событий. Этот механизм и был придуман как гибкая возможность обрабатывать события без наследования классов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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