Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Yuriam от Апреля 24, 2006, 09:28



Название: Запрет перемещения окон
Отправлено: Yuriam от Апреля 24, 2006, 09:28
Здравствуйте! Есть окно, положение которого не должно меняться пользователем. Как это можно сделать? Пробовал в функции QWidget::moveEvent перемещать окно на старое место, получается бесконечная рекурсия. Помогите.


Название: Запрет перемещения окон
Отправлено: Sergeich от Апреля 24, 2006, 16:48
Ну дык создай окно без заголовка, чтоб таскать не за что было.


Название: Запрет перемещения окон
Отправлено: Negative от Апреля 25, 2006, 10:48
в линуксе с alt все равно можно будет таскать


Название: Запрет перемещения окон
Отправлено: DenKor от Апреля 25, 2006, 11:50
Я бы сделал так.

По таймеру (5-10с или как надо) проверял положение окна и если надо
перетаскивал его обратно. + Можно сделать окно без заголовка.

Можно и по QWidget::moveEvent если сделать выход по рекурсии, что искомые координаты окна соответсвуют нашим.


Название: Запрет перемещения окон
Отправлено: Sergeich от Апреля 25, 2006, 12:07
Попробовал на 3-ке: все работает
Код:

#include <qapplication.h>
#include <qwidget.h>

class NMWidget : public QWidget
{
public:
NMWidget( QWidget* parent = 0, const char* name = 0 ) : QWidget( parent, name ) {}
void setPos( int x, int y ) { wpos = QPoint(x, y); move( wpos ); }
protected:
void moveEvent ( QMoveEvent* e ) { move(wpos); }
private:
QPoint wpos;
};

int main( int argc, char** argv )
{
QApplication app( argc, argv );
NMWidget w;
w.setPos( 400, 400 );
w.resize( 200, 200 );
w.show();
app.setMainWidget( &w );
return app.exec();
}