Qt6 topics merged with General

[Solved] overloading dropEvent

  • I am working on a simple window app. I have two qlistwidgets and I want to overload the dropEvent for one of them.
    @namespace Ui {
    class MainWindow;

    class MainWindow : public QMainWindow {
    MainWindow(QWidget *parent = 0);

    void changeEvent(QEvent *e);
    virtual void dropEvent(QDropEvent *e);

    Ui::MainWindow *ui;

    private slots:
    void on_createString_clicked();

    Ui::MainWindow *ui; is the main class that contains all the widgets. the ui_window.h file is generated by qtcreator.

    All the examples that I have seen put the function void dropEvent in the "your class" header file(the code above).

    I have tried this but it does not seem to work. It seems like I am doing this a level to high, but I don't know where to put it since you should not edit the ui_window.h because it will get overwritten the next time you do something in qtcreator.

    Any help would be great.

  • I think you could try this ..

    Extend QListWidget and override the dropEvent. Then in your designer, promote the QListWidget to the new class you created. That should work

  • I have created a new class and promoted my QListWidget to the new class but now it does not appear when I run the program. It is viewable in UI designer and the following code is generated.
    CustomProtocol = new CustomListWidget(centralWidget);
    CustomProtocol->setGeometry(QRect(440, 20, 300, 275));

    Does the constructor the new class need anything? It is currently blank.


  • Thanks I figured it out. I missed the : QListWidget(parent) so it was not inheriting the correct functions.

  • This is really helpful

    Thank you :)

  • glad it worked

Log in to reply