Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Racot от Ноябрь 29, 2011, 19:02



Название: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 29, 2011, 19:02
Вот я сделал новый проект в QtCreator --- Qt Widget->GUI приложение... кидаю пару кнопок на форму....создаются две кнопки класса QPushButton.....но и метод у них один......((((  и не пойму как мне переопределить методы этих кнопок....сделать их разными..........нет я конечно понимаю что можно унаследовать этот QPushButton ручками и всё сделать самому......но неужели нельзя как то автоматом как в Builder C++........или надо пользоваться фильтрами событий что бы разделить события двух объектов????.........хелп плиз......((( :-[
 


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: kambala от Ноябрь 29, 2011, 19:24
что значит "метод у них один"?


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Igors от Ноябрь 29, 2011, 19:36
1) Ресурсы - великая фича всех времен и народов
2) Чужой код вставленный в Ваш = всегда кал

Думайте


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 29, 2011, 19:39
Цитировать
что значит "метод у них один"?

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



Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 29, 2011, 19:43
ну он же функция-член)


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: iroln от Ноябрь 29, 2011, 19:50
Racot, что за несвязный поток сознания? Какой ещё один метод у двух кнопок? Кнопки соединяются с нужными слотами с помощью сигналов. Об этом в книжках пишут, читайте.


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: kambala от Ноябрь 29, 2011, 20:29
ТС, если озвучишь какую ты конечную цель преследуешь, может станет проще помочь


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Rem Norton от Ноябрь 30, 2011, 01:40
Рискну предположить, что вопрошавший перепутал сигнал с методом. Если это так, то спасет только изучения азов Qt. Ну или найти кого нибудь с опытом и большим количеством свободного времени для организации ликбеза.


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 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

};


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


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: kambala от Ноябрь 30, 2011, 18:16
можно попробовать считывать нажатую кнопку через QApplication::mouseButtons(), но вроде ж сигнал не отправляется при нажатии на кнопку правой кнопкой мыши? в общем если нет, тогда или eventFilter или унаследуйся от QPushButton и добавь там сигнал при нажатии на кнопку правой кнопкой мыши.


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 30, 2011, 18:45
Цитировать
но вроде ж сигнал не отправляется при нажатии на кнопку правой кнопкой мыши?
да вот и я о том же....... ну теперь вроде понятно что только фильтрами или наследовать......но вроде это как то не очень удобно......я думал как то попроще........

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

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

Всё равно большое спасибо!!!)))


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: iroln от Ноябрь 30, 2011, 19:49
Цитировать
(сигнылы понимают только что было нажатие а какой кнопкой не воспринимают)
Странно вы как-то понимаете механизм работы сигналов/слотов. У каждого экземпляра кнопки свои собственные сигналы, которые высылаются если с этими экземплярами что-то делают. Они никак не зависимы друг от друга.


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: Racot от Ноябрь 30, 2011, 20:32
Сигналы и слоты есть не на все события.......если ткнуть правой кнопкой мыши над кнопкой - никакой сигнал не полетит.......а обработчик событий может перехватить....... вот что я имел ввиду....)


Название: Re: Как переопределить методы??? (при создании в дизайнере)
Отправлено: iroln от Ноябрь 30, 2011, 21:45
Racot
Вас фиг поймёшь, вы так пишете, что трудно понять, в чём проблема заключается.

В этом случае проще и удобнее всего использовать фильтр событий. Этот механизм и был придуман как гибкая возможность обрабатывать события без наследования классов.