Qt/Widgets/QWidgetSubclass
From ProgrammingExamples
Form.h
#ifndef BUTTONFORM_H #define BUTTONFORM_H #include "ui_form.h" class MyForm : public QWidget, private Ui::Form { Q_OBJECT public: MyForm(QWidget *parent = 0); public slots: void slot_fileDoubleClicked(); }; #endif
Form.cpp
#include "form.h" #include <KFileWidget> #include <KUrl> #include <iostream> class CustomFileWidget : public KFileWidget { Q_OBJECT public: CustomFileWidget(const KUrl &url, QWidget* parent) : KFileWidget(url, parent){} void mouseDoubleClickEvent ( QMouseEvent * event ) { emit signal_fileDoubleClicked(); } signals: void signal_fileDoubleClicked(); }; MyForm::MyForm(QWidget *parent) : QWidget(parent) { setupUi(this); CustomFileWidget* fileWidget = new CustomFileWidget( KUrl("/home"), this ); fileWidget->show(); connect( fileWidget, SIGNAL( signal_fileDoubleClicked() ), this, SLOT(slot_fileDoubleClicked()) ); } void MyForm::slot_fileDoubleClicked() { std::cout << "File double clicked" << std::endl; } #include "form.moc" #include "moc_form.moc"
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(KFileWidgetDemo) FIND_PACKAGE(Qt4 REQUIRED) INCLUDE(${QT_USE_FILE}) find_package(KDE4 4.5.0 REQUIRED) include_directories( ${KDE4_INCLUDES} ) QT4_WRAP_UI(UISrcs form.ui) #QT4_WRAP_CPP(MOCSrcs form.h) #don't manual MOC of you are going to automoc (using kde4_add_executable) include_directories(${include_directories} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) kde4_add_executable(KFileWidgetDemo main.cpp form.h form.cpp ${MOCSrcs} ${UISrcs}) TARGET_LINK_LIBRARIES(KFileWidgetDemo ${QT_LIBRARIES} ${KDE_LIBRARIES} ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS})