Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: SLiDER от Февраль 25, 2005, 23:16



Название: 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-а убрать нельзя, да и масштабирование возможно только когда за него таскаеш, а за края виджета никак. Но это уже существенно лучше чем ничего.  :)