Qt/Widgets/QWidgetSubclass

From ProgrammingExamples
< Qt
Jump to: navigation, search

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})