Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Qt] Brak interakcji z przyciskami spowodowany d&d

Ostatnio zmodyfikowano 2015-01-10 23:26
Autor Wiadomość
Nowicjusz
Temat założony przez niniejszego użytkownika
[Qt] Brak interakcji z przyciskami spowodowany d&d
» 2015-01-08 20:52:42
Myslałem, że obejdzie się bez pisania posta ale niestety, ta biblioteka za niedlugo mnie wykonczy ;p

Po skonczeniu mechanizmu drag and drop pojawia się problem podczas gdy chce dodać do widgeta przycisk lub text box. Nie działa w ogóle interakcja między nimi, na przycisk można cykać i nie ma animacji wciskania, a w text boxie nie pojawia sie kursor. Okazało się, że problem leży w metodzie setMinimumSize podejrzewam, że przez to iż ustawiłem bardzo duży size, widget mimo iż jest niewidzialny przykrywa wszystkie inne kontrolki, jest jakby na głównym planie. Chciałem to obejść ustawiając setMiniumSize na 0 w momencie gdy zakończę d&d, ale gdy wywołuję ową metodę poza konstruktorem to w ogóle nic się nie dzieje, tragedia.

setMinimumSize - tą metodą ustawiam obszar w jakim ma działać d&d jeżeli jest jakiś inny sposób na ustawienie tego obszaru to być może to wyeliminowałoby problem.


C/C++
#DragWidget

class DragWidget
    : public QWidget
{
public:
    DragWidget( QWidget * parent = 0 );
    ~DragWidget();
    MyLabel * myLabel;
protected:
    void dragEnterEvent( QDragEnterEvent * event ) Q_DECL_OVERRIDE;
    virtual void dropEvent( QDropEvent * event ) Q_DECL_OVERRIDE;
    void mousePressEvent( QMouseEvent * event ) Q_DECL_OVERRIDE;
    void zmianaRozmiaru();
};

DragWidget::DragWidget( QWidget * parent )
    : QWidget( parent )
{
    this->setAcceptDrops( true );
    QRect screenRect = QApplication::desktop()->screenGeometry();
    this->setMinimumSize( screenRect.width(), screenRect.height() ); // tU POBIERAC ROZDZIELCZOSC MONITORA
   
}

void DragWidget::zmianaRozmiaru() //W konstruktorze dziala
{
    QWidget::setMinimumSize( 0, 0 );
}


C/C++
#DragCenterWidget

class DragCenterWidget
    : public DragWidget
{
private:
    QWidget * parent;
public:
    DragCenterWidget( QWidget * parent );
    ~DragCenterWidget();
    void dropEvent( QDropEvent * event ) Q_DECL_OVERRIDE;
};

#include "dragcenterwidget.h"

DragCenterWidget::DragCenterWidget( QWidget * parent )
    : DragWidget( parent )
{
    this->parent = parent;
   
}

void DragCenterWidget::dropEvent( QDropEvent * event )
{
    this->zmianaRozmiaru(); //Niedziala !!!!!!!!!! (Metoda na pewno sie wykonuje)
}


C/C++
#Wywolanie

DragWidget * k1 = new DragCenterWidget( ui->widgetCenter );

P-124460
turaz
» 2015-01-08 21:40:17
Jak możesz to zarzuć większą ilością kodu oraz komentarzami bo powiem Ci szczerze, że tej 'zmiany rozmiaru' w której ma być d&d to w ogóle nie rozumiem.
Z chęcią pomogę tylko na razie mało rozumiem z tego kodu.
P-124461
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2015-01-08 21:44:57
Kurde wiesz co udało mi się to rozwiązać ale innym sposobem. Okazało się, że z nie wiadomo jakich przyczyn nie można zmniejszać rozmiaru przy użyciu metody setMinimumSize, można jedynie zwiększać dziwne ;p


P-124463
turaz
» 2015-01-08 21:53:01
minimumSize to jest property, które jak nazwa wskazuje określa minimalny rozmiar tego widgetu. Jak chcesz zmienić rozmiar danego widgetu używaj metody
resize()

P.S. Swoją drogą coś nie tak masz z tym d&d, ale to musiałbym (tak jak wspominałem) zobaczyć więcej kodu. ;)
P-124464
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2015-01-09 01:13:38
A moge ci poslac caly projekt?
P-124478
turaz
» 2015-01-09 20:35:50
Oczywiście, mój mail: turaz6@gmail.com
Nie obiecuje, że dzisiaj (09.01.2015) do niego zajrzę, ale jutro zapewne znajdę kilka minut. ;)
P-124520
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2015-01-10 23:26:26
poslalem, zamkne temat.
P-124614
« 1 »
  Strona 1 z 1