1771
|
Qt / Пользовательский интерфейс (GUI) / Re: Общее контекстное меню для нескольких виджетов
|
: Июль 04, 2012, 22:00
|
Я сделал так: class myTextEdit: public QTextEdit { Q_OBJECT
signals: void showContextMenu(QPoint);
protected: virtual void contextMenuEvent(QContextMenuEvent *event) { emit showContextMenu(event->globalPos()); }
class Widget: public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0) { connect(&textEdit, SIGNAL(showContextMenu(QPoint)), this, SLOT(showContextMenu(QPoint))); }
private: MyTextEdit textEdit;
private slots: void showContextMenu(QPoint point) { QMenu *menu = new QMenu(); menu->addAction("Action1"); menu->addAction("Action2"); menu->exec(point); delete menu; }
protected: virtual void contextMenuEvent(QContextMenuEvent *event) { showContextMenu(event->globalPos()); } };
Так будет правильно? По крайней мере этот код работает
|
|
|
1772
|
Qt / Пользовательский интерфейс (GUI) / [РЕШЕНО] Общее контекстное меню для нескольких виджетов
|
: Июль 04, 2012, 21:44
|
Здравствуйте! есть класс, наследующий QWidget, имеющий переопределенное событие void contextMenuEvent(QContextMenuEvent *event) есть второй класс, наследующий QTextEdit, и тоже имеет переопределенное событие void contextMenuEvent(QContextMenuEvent *event) второй класс имеет родителя - первый Обобщу: есть окно, оно содержит textEdit, у этого окна есть контекстное меню, но хочется чтобы при вызове контексного меню textEdit, показывалось контекстное меню окна Как это сделать?? Подскажите пожалуйста!
|
|
|
1773
|
Программирование / Алгоритмы / Re: Граф. Алгоритм нахождения расстояния м/д вершинами.
|
: Июль 03, 2012, 16:14
|
Igors, спасибо большое =) осталось теперь перевести этот код на Java , но это уже моя забота, да и похожи они синтаксисом DmitryM, не буду с вами спорить, я писал предположение, выдвинутое, благодаря знаниям (или их отсутствием, смотря с чем сравнивать), поэтому могу и ошибаться, но по крайней мере материал википедии я читал
|
|
|
1774
|
Программирование / Алгоритмы / Re: Граф. Алгоритм нахождения расстояния м/д вершинами. Лень.
|
: Июль 03, 2012, 14:44
|
Patrin Andrey, в алгоритме Дейкстры это представление не даст ничего хорошего, представим, что нужно найти минимальнй путь скажем от первой вершины до последней, вес у всех равен, следовательно, первый же путь окажется для такого алгоритма истинным (что не всегда хорошо), для условия моей задачи ориентации нет и нет у ребер веса, что определенно облегчает алгоритм поиска, и использовать для его решения Дейкстру не очень рационально, да и как я говорил выше, с генерацией и претворением алгоритмов у меня проблемы Поэтому я и прошу у вас помощи
|
|
|
1778
|
Qt / Пользовательский интерфейс (GUI) / Re: Скрытие окна с taskbar
|
: Июль 02, 2012, 04:04
|
Ну взял с того что у меня программа не закрывалась, когда юзал этот атрибут Похоже это из-за того что я не описывал деструктор Спасибо за подсказку не знал про qDebug( "deleted" ), но разве куДэбаг не используется только в отладочных версиях?? Покрайней мере у меня компилятор (MinGW) ругался, когда я компилировал под релиз, а qDebug забывал закомментировать
|
|
|
1782
|
Qt / Пользовательский интерфейс (GUI) / [РЕШЕНО] Окно без рамки - изменение размеров окна с помощью мышки
|
: Июль 01, 2012, 20:34
|
Здравствуйте Имеется виджет с флагом Qt::FramelessWindowHint, т.е. нет у него рамки, тянув которую можно изменить размер окошка, нет также заголовка с системными кнопками (свернуть, развернуть, закрыть) с полем, благодаря которому можно перемещать окно. Если с перемещением окна проблем нет: в помощь идут события нажатия и перемещения мыши: QPoint position;
void mousePressEvent(QMouseEvent *event) { position = event->pos(); }
void mouseMoveEvent(QMouseEvent *event) { move(event->globalPos() - position); } };
то как программно сделать так чтобы у такого "укороченного" окна можно было изменить размер потянув за его края? Думаю тут нужно использовать теже события что и при перемещении окна, добавив к ним функцию resize() окна, ну и также проверять где находится указатель мышки, при нажатии оной, и если на границе окна, то... а что "то", я не знаю Помогите пожалуйста примерами
|
|
|
1783
|
Qt / Пользовательский интерфейс (GUI) / Re: Скрытие окна с taskbar
|
: Июль 01, 2012, 20:10
|
Если использовать winApi, то пример будет таким: class AbstractNote: public QWidget { Q_OBJECT public: explicit AbstractNote(QWidget *parent = 0) { setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
HWND hwnd = winId();
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
show(); }
protected: virtual void paintEvent(QPaintEvent *) { QPainter painter(this);
painter.setBrush(Qt::yellow); painter.drawRect(rect()); }
virtual void mouseDoubleClickEvent(QMouseEvent *) { close(); } };
это создание обычного виджета, без рамки, которого менеджер окон не показывает на панели задач, но хотелось бы кроссплатформенности
|
|
|
1784
|
Qt / Пользовательский интерфейс (GUI) / Re: Скрытие окна с taskbar
|
: Июль 01, 2012, 19:57
|
вот тестовый пример с использованием флага и атрибута: class AbstractNote: public QWidget { Q_OBJECT public: explicit AbstractNote(QWidget *parent = 0) { setWindowFlags(Qt::SplashScreen); setAttribute(Qt::WA_DeleteOnClose); }
protected: virtual void paintEvent(QPaintEvent *) { QPainter painter(this);
painter.setBrush(Qt::yellow); painter.drawRect(rect()); }
virtual void mouseDoubleClickEvent(QMouseEvent *) { close(); } };
|
|
|
|
|