Название: WType_Popup и resize
Отправлено: SLiDER от Февраль 25, 2005, 23:16
Можно ли, как нибудь, при установленном у виджета свойстве WType_Popup, оставить возможность, для пользователя, масштабировать этот виджет мышкой, тягая за его (виджета) края.
З.Ы. Если кто то пользовался Borland C++ Builder версии 6, может посмотреть, там это реализовано в редакторе кода, у выпадающего списка автозавершения ввода.
Название: WType_Popup и resize
Отправлено: Sergeich от Февраль 28, 2005, 17:44
Используй QSizeGrip, что-то вроде этого: // main.cpp
#include <qapplication.h> #include <qwidget.h> #include <qlistbox.h> #include <qsizegrip.h> #include <qlayout.h> #include <qlineedit.h>
class Popup : public QWidget { Q_OBJECT public: Popup( QWidget* parent = 0, const char* name = 0 ) : QWidget( parent, name, WType_Popup | WStyle_NormalBorder ) { edit = new QLineEdit( this ); QSizeGrip* grip = new QSizeGrip( this ); QHBoxLayout* mainLayout = new QHBoxLayout( this ); mainLayout->addWidget( edit ); mainLayout->addWidget( grip ); } public slots: void popup( QListBoxItem* item, const QPoint& p) { move( p ); if ( item ) edit->setText( item->text() ); else edit->setText(""); show(); } private: QLineEdit* edit; };
int main( int argc, char** argv ) { QApplication app( argc, argv ); QObject::connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) ); QListBox lb; lb.insertItem( "One" ); lb.insertItem( "Two" ); lb.insertItem( "Three" ); Popup pp; QObject::connect( &lb, SIGNAL( contextMenuRequested(QListBoxItem*, const QPoint&) ), &pp, SLOT( popup(QListBoxItem*, const QPoint&) ) ); lb.show(); return app.exec(); }
#include "main.moc"
Название: WType_Popup и resize
Отправлено: SLiDER от Март 01, 2005, 15:41
Спасибо за помощь. Это, практически, то, что нужно. Жаль, что визуальное отображение самого qsizegrip-а убрать нельзя, да и масштабирование возможно только когда за него таскаеш, а за края виджета никак. Но это уже существенно лучше чем ничего. :)
|