Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: exp от Июнь 22, 2009, 03:39



Название: Создать подсказку каждого элемента QComboBox
Отправлено: exp от Июнь 22, 2009, 03:39
Приветствую.
Возникла такая проблема. Необходимо, чтобы при наводке курсора на элемент комбобокса сразу же появлялась подсказка(описание элемента).
К сожалению необходимо использовать только 3-ю версию QT. Есть метод QToolTip::tip, но напрямую использовать его нельзя.
Создал отдельный класс, для обёртки:
Код
C++ (Qt)
class DynamicTip : public QToolTip
{
public:
   DynamicTip( QWidget * parent );
 
   void getTool(const QRect &req, const QString &str);
 
protected:
   void maybeTip( const QPoint & );
};
...
void DynamicTip::getTool(const QRect &req, const QString &str)
{
QToolTip::tip(req,str);
}
 

основной класс:

Код
C++ (Qt)
class Fileexp : public QDialog
{
   Q_OBJECT
public:
   Fileexp(QWidget *parent = 0, const char *name = 0 );
private slots:
   void newSlot(int i);
private:
   QComboBox *combo;
   DynamicTip * t;
};
 

где в конструкторе:

Код
C++ (Qt)
...
combo  = new QComboBox( FALSE, this, "combo" );
...
combo->insertItem(tr("tag1"));
combo->insertItem(tr("tag2"));
...
connect(combo, SIGNAL( highlighted(int) ), this, SLOT(newSlot(int)));
 

слот:

Код
C++ (Qt)
void Fileexp::newSlot(int i)
{
t = new DynamicTip( this );
QRect r(combo->x(),combo->y(),combo->width(),combo->height());
 
if(i==0) { t->getTool(r,tr("tag1_str")); }
if(i==1) { t->getTool(r,tr("tag2_str")); }
...
}
 

И проблема в том, что сама-то подсказка работает, но не при наводе на элемент курсором, а уже при выборе его. А необходимо, чтобы перед выбором на каждый элемент появлялась подсказка с описанием. Может кто подскажет где накосячил? Заранее спасибо.
Полные исходники в прикреплённом файле.