0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-04-01 07:03:43 +03:00
This commit is contained in:
makarenkov 2025-03-20 08:47:56 +00:00 committed by GitHub
commit cdd87ce681
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 135 additions and 56 deletions

View File

@ -12,6 +12,7 @@ option(LIMEREPORT_DEMO "Build LimeReport demos" OFF)
option(ENABLE_DIALOG_DESIGNER "Enable dialog designer" OFF)
option(HAVE_UI_LOADER "Enable ui loader" OFF)
option(USE_QT6 "Use Qt6" OFF)
option(UPDATE_TRANSLATIONS "Update TS files" OFF)
if (ENABLE_DIALOG_DESIGNER AND NOT HAVE_UI_LOADER)
message(FATAL_ERROR "You need to enable HAVE_UI_LOADER")
@ -35,13 +36,9 @@ if(HAVE_UI_LOADER)
if(ENABLE_DIALOG_DESIGNER)
if(USE_QT6)
if(ENABLE_DIALOG_DESIGNER)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Designer DesignerComponentsPrivate REQUIRED)
endif()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Designer DesignerComponentsPrivate REQUIRED)
else()
if(ENABLE_DIALOG_DESIGNER)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Designer DesignerComponents REQUIRED)
endif()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Designer DesignerComponents REQUIRED)
endif(USE_QT6)
endif()
@ -397,7 +394,7 @@ set(GLOBAL_HEADERS
${PROJECT_NAME}/LRCallbackDS
${PROJECT_NAME}/LRDataManager
${PROJECT_NAME}/LRScriptManager
${CMAKE_BINARY_DIR}/limereport/version.h
${CMAKE_CURRENT_BINARY_DIR}/limereport/version.h
)
set(PROJECT_NAME ${PROJECT_NAME}-qt${QT_VERSION_MAJOR})
@ -455,10 +452,15 @@ if(ENABLE_ZINT)
target_link_libraries( ${PROJECT_NAME} PRIVATE QZint)
endif(ENABLE_ZINT)
target_compile_definitions( ${PROJECT_NAME} PRIVATE -DDEFAULT_ITEM_PADDING=${DEFAULT_ITEM_PADDING} -DHAVE_QT${QT_VERSION_MAJOR} -DHAVE_REPORT_DESIGNER -DUSE_QJSENGINE -D_CRT_SECURE_NO_WARNINGS)
target_compile_definitions( ${PROJECT_NAME} PRIVATE
-DDEFAULT_ITEM_PADDING=${DEFAULT_ITEM_PADDING}
-DHAVE_QT${QT_VERSION_MAJOR}
-DHAVE_REPORT_DESIGNER
-DUSE_QJSENGINE
-D_CRT_SECURE_NO_WARNINGS)
target_include_directories( ${PROJECT_NAME} PRIVATE
limereport/
limereport/
limereport/base
limereport/bands
limereport/databrowser
@ -470,7 +472,7 @@ target_include_directories( ${PROJECT_NAME} PRIVATE
limereport/scripteditor )
target_include_directories( ${PROJECT_NAME} PUBLIC
${CMAKE_BINARY_DIR}/limereport )
${CMAKE_CURRENT_BINARY_DIR}/limereport )
target_include_directories( ${PROJECT_NAME} INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/include)
@ -478,10 +480,73 @@ target_include_directories( ${PROJECT_NAME} INTERFACE
list (APPEND GLOBAL_HEADERS ${EXTRA_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${GLOBAL_HEADERS}")
message(STATUS "${PROJECT_NAME} UPDATE_TRANSLATIONS: ${UPDATE_TRANSLATIONS}")
list(APPEND LANGUAGES ru es fr pl zh ar)
foreach(lang ${LANGUAGES})
list(APPEND TS_FILES translations/limereport_${lang}.ts)
endforeach()
if (${QT_VERSION} GREATER_EQUAL 6.7.0)
qt_add_lrelease(
TS_FILES ${TS_FILES}
EXCLUDE_FROM_ALL
LRELEASE_TARGET ${PROJECT_NAME}_lrelease
OPTIONS -removeidentical
)
if (UPDATE_TRANSLATIONS)
qt_add_lupdate(
TS_FILES ${TS_FILES}
SOURCES ${LIMEREPORT_SOURCES}
LUPDATE_TARGET ${PROJECT_NAME}_lupdate
OPTIONS -noobsolete
)
add_dependencies(${PROJECT_NAME}_lrelease ${PROJECT_NAME}_lupdate)
endif()
elseif (${QT_VERSION} GREATER_EQUAL 6.2.0)
qt_add_lrelease(
${PROJECT_NAME}
TS_FILES ${TS_FILES}
OPTIONS -removeidentical
)
if (UPDATE_TRANSLATIONS)
qt_add_lupdate(
${PROJECT_NAME}
TS_FILES ${TS_FILES}
SOURCES ${LIMEREPORT_SOURCES}
OPTIONS -noobsolete
)
add_dependencies(${PROJECT_NAME}_lrelease ${PROJECT_NAME}_lupdate)
endif()
else()
if (UPDATE_TRANSLATIONS)
qt5_create_translation(
QM_FILES
${LIMEREPORT_SOURCES}
${TS_FILES}
OPTIONS -noobsolete -locations relative
)
else()
qt5_add_translation(QM_FILES ${TS_FILES} OPTIONS -removeidentical)
endif()
add_custom_target(${PROJECT_NAME}_lrelease DEPENDS ${QM_FILES})
endif()
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_lrelease)
install(TARGETS
${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/limereport)

View File

@ -4,7 +4,7 @@ if(GIT_EXECUTABLE)
# Generate a git-describe version string from Git repository tags
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags --dirty
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
@ -22,7 +22,7 @@ if(NOT DEFINED GIT_VERSION)
endif()
configure_file(
${CMAKE_SOURCE_DIR}/limereport/version.h.in
${CMAKE_BINARY_DIR}/limereport/version.h
${CMAKE_CURRENT_SOURCE_DIR}/limereport/version.h.in
${CMAKE_CURRENT_BINARY_DIR}/limereport/version.h
@ONLY)

View File

@ -103,7 +103,7 @@ void SizeHandleRect::mousePressEvent(QMouseEvent *e)
return;
m_startSize = m_curSize = m_resizable->size();
#if QT_VERSION < QT_VERSION_CHECK(5,15,3)
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
m_startPos = m_curPos = m_resizable->mapFromGlobal(e->globalPos());
#else
m_startPos = m_curPos = m_resizable->mapFromGlobal(e->globalPosition());
@ -121,7 +121,11 @@ void SizeHandleRect::mouseMoveEvent(QMouseEvent *e)
// causes the handle and the mouse cursor to become out of sync
// once a min/maxSize limit is hit. When the cursor reenters the valid
// areas, it will now snap to it.
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
m_curPos = m_resizable->mapFromGlobal(e->globalPos());
#else
m_curPos = m_resizable->mapFromGlobal(e->globalPosition());
#endif
QSize delta = QSize(m_curPos.x() - m_startPos.x(), m_curPos.y() - m_startPos.y());
switch (m_dir) {
case Right:

View File

@ -39,7 +39,7 @@ typedef QMap<QString, Qt::Alignment> AlignMap;
class AlignmentItemEditor;
class AlignmentPropItem: public ObjectPropItem {
class LIMEREPORT_EXPORT AlignmentPropItem: public ObjectPropItem {
Q_OBJECT
public:
AlignmentPropItem(): ObjectPropItem(), m_horizEditor(NULL), m_vertEditor(NULL) { }

View File

@ -94,16 +94,24 @@ void BorderFrameEditor::unSetAllLines()
void BorderFrameEditor::mousePressEvent(QMouseEvent* event)
{
if (event->x() >= 10 && event->y() < 30)
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
int x = event->x();
int y = event->y();
#else
int x = event->position().x();
int y = event->position().y();
#endif
if (x >= 10 && y < 30)
emit borderSideClicked(BaseDesignIntf::BorderSide::TopLine, !topLine);
if ((event->x() >= 10 && event->x() < 30) && (event->y() > 10))
if ((x >= 10 && x < 30) && (y > 10))
emit borderSideClicked(BaseDesignIntf::BorderSide::LeftLine, !leftLine);
if (event->x() >= 10 && (event->y() > 80 && event->y() < rect().bottom()))
if (x >= 10 && (y > 80 && y < rect().bottom()))
emit borderSideClicked(BaseDesignIntf::BorderSide::BottomLine, !bottomLine);
if ((event->x() >= 130 && event->x() < rect().width()) && event->y() > 10)
if ((x >= 130 && x < rect().width()) && y > 10)
emit borderSideClicked(BaseDesignIntf::BorderSide::RightLine, !rightLine);
}
@ -172,6 +180,7 @@ QGraphicsLineItem* BorderFrameEditor::createSideLine(LimeReport::BaseDesignIntf:
return scene->addLine(
QLineF(10, rect().bottom() - 10, rect().width() - 10, rect().bottom() - 10), m_pen);
}
return nullptr;
}
void BorderFrameEditor::updateBorders()

View File

@ -770,26 +770,25 @@ QSizeF AbstractSeriesChart::calcChartLegendSize(const QFont& font, const qreal m
}
default: {
qreal cw = 0;
qreal maxWidth = 0;
qreal mw = 0;
if (m_chartItem->series().isEmpty()) {
foreach (QString label, m_designLabels) {
cw += fm.height();
if (maxWidth < fm.boundingRect(label).width())
maxWidth = fm.boundingRect(label).width() + 10;
if (mw < fm.boundingRect(label).width())
mw = fm.boundingRect(label).width() + 10;
}
} else {
foreach (SeriesItem* series, m_chartItem->series()) {
cw += fm.height();
if (maxWidth < fm.boundingRect(series->name()).width())
maxWidth = fm.boundingRect(series->name()).width() + 10;
if (mw < fm.boundingRect(series->name()).width())
mw = fm.boundingRect(series->name()).width() + 10;
}
}
cw += fm.height();
return QSizeF(maxWidth + fm.height() * 2, cw);
return QSizeF(mw + fm.height() * 2, cw);
}
}
return QSizeF();
}
bool AbstractSeriesChart::verticalLabels(QPainter* painter, QRectF labelsRect)

View File

@ -1354,10 +1354,10 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent* event)
pasteAction->setEnabled(false);
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
copyAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_C));
cutAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_X));
pasteAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_V));
lockGeometryAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_L));
copyAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_C));
cutAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_X));
pasteAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_V));
#else
lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L));
copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));

View File

@ -112,7 +112,7 @@ private:
DataNode* m_rootNode;
};
class DataSourceManager:
class LIMEREPORT_EXPORT DataSourceManager:
public QObject,
public ICollectionContainer,
public IVariablesContainer,

View File

@ -36,7 +36,7 @@
namespace LimeReport {
class BaseDesignIntf;
class ItemDesignIntf: public BaseDesignIntf {
class LIMEREPORT_EXPORT ItemDesignIntf: public BaseDesignIntf {
Q_OBJECT
Q_PROPERTY(LocationType itemLocation READ itemLocation WRITE setItemLocation)
Q_PROPERTY(bool stretchToMaxHeight READ stretchToMaxHeight WRITE setStretchToMaxHeight)
@ -81,7 +81,7 @@ protected:
}
};
class ContentItemDesignIntf: public ItemDesignIntf {
class LIMEREPORT_EXPORT ContentItemDesignIntf: public ItemDesignIntf {
Q_OBJECT
public:
ContentItemDesignIntf(const QString& xmlTypeName, QObject* owner = 0,

View File

@ -465,7 +465,7 @@ void PreviewReportWindow::scaleComboboxChanged(QString text)
if (m_scalePercentChanging)
return;
m_scalePercentChanging = true;
m_previewReportWidget->setScalePercent(text.remove(text.count() - 1, 1).toInt());
m_previewReportWidget->setScalePercent(text.remove(text.length() - 1, 1).toInt());
m_scalePercentChanging = false;
}

View File

@ -162,7 +162,7 @@ void ReportDesignWindow::createActions()
{
m_newReportAction = new QAction(tr("New Report"), this);
m_newReportAction->setIcon(QIcon(":/report/images/newReport"));
m_newReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_N));
m_newReportAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_N));
connect(m_newReportAction, SIGNAL(triggered()), this, SLOT(slotNewReport()));
m_newPageAction = new QAction(tr("New Report Page"), this);
@ -184,7 +184,7 @@ void ReportDesignWindow::createActions()
m_undoAction = new QAction(tr("Undo"), this);
m_undoAction->setIcon(QIcon(":/report/images/undo"));
m_undoAction->setEnabled(false);
m_undoAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Z));
m_undoAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_Z));
connect(m_undoAction, SIGNAL(triggered()), this, SLOT(slotUndo()));
m_redoAction = new QAction(tr("Redo"), this);
@ -195,17 +195,17 @@ void ReportDesignWindow::createActions()
m_copyAction = new QAction(tr("Copy"), this);
m_copyAction->setIcon(QIcon(":/report/images/copy"));
m_copyAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_C));
m_copyAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_C));
connect(m_copyAction, SIGNAL(triggered()), this, SLOT(slotCopy()));
m_pasteAction = new QAction(tr("Paste"), this);
m_pasteAction->setIcon(QIcon(":/report/images/paste"));
m_pasteAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_V));
m_pasteAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_V));
connect(m_pasteAction, SIGNAL(triggered()), this, SLOT(slotPaste()));
m_cutAction = new QAction(tr("Cut"), this);
m_cutAction->setIcon(QIcon(":/report/images/cut"));
m_cutAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_X));
m_cutAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_X));
connect(m_cutAction, SIGNAL(triggered()), this, SLOT(slotCut()));
m_settingsAction = new QAction(tr("Settings"), this);
@ -215,13 +215,13 @@ void ReportDesignWindow::createActions()
m_useGridAction = new QAction(tr("Use grid"), this);
m_useGridAction->setIcon(QIcon(":/report/images/grid"));
m_useGridAction->setCheckable(true);
m_useGridAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_G));
m_useGridAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_G));
connect(m_useGridAction, SIGNAL(toggled(bool)), this, SLOT(slotUseGrid(bool)));
m_useMagnetAction = new QAction(tr("Use magnet"), this);
m_useMagnetAction->setIcon(QIcon(":/report/images/magnet"));
m_useMagnetAction->setCheckable(true);
m_useMagnetAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_M));
m_useMagnetAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_M));
connect(m_useMagnetAction, SIGNAL(toggled(bool)), this, SLOT(slotUseMagnet(bool)));
m_newTextItemAction = new QAction(tr("Text Item"), this);
@ -231,7 +231,7 @@ void ReportDesignWindow::createActions()
m_saveReportAction = new QAction(tr("Save Report"), this);
m_saveReportAction->setIcon(QIcon(":/report/images/save"));
m_saveReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S));
m_saveReportAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_S));
connect(m_saveReportAction, SIGNAL(triggered()), this, SLOT(slotSaveReport()));
m_saveReportAsAction = new QAction(tr("Save Report As"), this);
@ -241,7 +241,7 @@ void ReportDesignWindow::createActions()
m_loadReportAction = new QAction(tr("Load Report"), this);
m_loadReportAction->setIcon(QIcon(":/report/images/folder"));
m_loadReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_O));
m_loadReportAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_O));
connect(m_loadReportAction, SIGNAL(triggered()), this, SLOT(slotLoadReport()));
m_deleteItemAction = new QAction(tr("Delete item"), this);
@ -259,7 +259,7 @@ void ReportDesignWindow::createActions()
m_previewReportAction = new QAction(tr("Render Report"), this);
m_previewReportAction->setIcon(QIcon(":/report/images/render"));
m_previewReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_P));
m_previewReportAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_P));
connect(m_previewReportAction, SIGNAL(triggered()), this, SLOT(slotPreviewReport()));
m_testAction = new QAction("test", this);
@ -286,13 +286,13 @@ void ReportDesignWindow::createActions()
m_hideLeftPanel = new QAction(tr("Hide left panel | Alt+L"), this);
m_hideLeftPanel->setCheckable(true);
m_hideLeftPanel->setIcon(QIcon(":/report/images/hideLeftPanel"));
m_hideLeftPanel->setShortcut(QKeySequence(Qt::ALT | Qt::Key_L));
m_hideLeftPanel->setShortcut(QKeySequence(Qt::Key(Qt::ALT) | Qt::Key_L));
connect(m_hideLeftPanel, SIGNAL(toggled(bool)), this, SLOT(slotHideLeftPanel(bool)));
m_hideRightPanel = new QAction(tr("Hide right panel | Alt+R"), this);
m_hideRightPanel->setCheckable(true);
m_hideRightPanel->setIcon(QIcon(":/report/images/hideRightPanel"));
m_hideRightPanel->setShortcut(QKeySequence(Qt::ALT | Qt::Key_R));
m_hideRightPanel->setShortcut(QKeySequence(Qt::Key(Qt::ALT) | Qt::Key_R));
connect(m_hideRightPanel, SIGNAL(toggled(bool)), this, SLOT(slotHideRightPanel(bool)));
#ifdef HAVE_QTDESIGNER_INTEGRATION
m_deleteDialogAction = new QAction(tr("Delete dialog"), this);
@ -306,7 +306,7 @@ void ReportDesignWindow::createActions()
m_lockSelectedItemsAction = new QAction(tr("Lock selected items"), this);
m_lockSelectedItemsAction->setIcon(QIcon(":/report/images/lock"));
m_lockSelectedItemsAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
m_lockSelectedItemsAction->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_L));
connect(m_lockSelectedItemsAction, SIGNAL(triggered()), this, SLOT(slotLockSelectedItems()));
m_unlockSelectedItemsAction = new QAction(tr("Unlock selected items"), this);
@ -317,7 +317,7 @@ void ReportDesignWindow::createActions()
m_selectOneLevelItems = new QAction(tr("Select one level items"), this);
// m_unlockSelectedItemsAction->setIcon(QIcon(":/report/images/unlock"));
m_selectOneLevelItems->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_A));
m_selectOneLevelItems->setShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_A));
connect(m_selectOneLevelItems, SIGNAL(triggered()), this, SLOT(slotSelectOneLevelItems()));
}

View File

@ -33,6 +33,7 @@
#include <QComboBox>
#include <QWidget>
//#include <QPushButton>
#include "lrglobal.h"
class QToolButton;
@ -58,7 +59,7 @@ private:
bool m_popup;
};
class ComboBoxEditor: public QWidget {
class LIMEREPORT_EXPORT ComboBoxEditor: public QWidget {
Q_OBJECT
public:
// explicit ComboBoxEditor(QWidget *parent = 0);

View File

@ -42,7 +42,7 @@
namespace LimeReport {
class ObjectPropItem: public QObject {
class LIMEREPORT_EXPORT ObjectPropItem: public QObject {
Q_OBJECT
public:

View File

@ -250,9 +250,10 @@ void XMLWriter::saveTranslation(QString propertyName, QObject* item, QDomElement
foreach (PageTranslation* page, curTranslation->pagesTranslation()) {
QDomElement pageNode = m_doc->createElement(page->pageName);
languageNode.appendChild(pageNode);
foreach (ItemTranslation* item, page->itemsTranslation) {
QDomElement itemNode = m_doc->createElement(item->itemName);
foreach (PropertyTranslation* property, item->propertyesTranslation) {
foreach (ItemTranslation* translationItem, page->itemsTranslation) {
QDomElement itemNode = m_doc->createElement(translationItem->itemName);
foreach (PropertyTranslation* property,
translationItem->propertyesTranslation) {
if (property->sourceValue.compare(property->value) != 0) {
QDomElement propertyNode = m_doc->createElement(property->propertyName);
propertyNode.setAttribute("Value", property->value);

View File

@ -35,8 +35,8 @@ TranslationEditor::TranslationEditor(QWidget* parent):
ui->tbStrings->setHorizontalHeaderItem(2, new QTableWidgetItem(tr("Property")));
ui->tbStrings->setHorizontalHeaderItem(3, new QTableWidgetItem(tr("Source text")));
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
m_clrReturn
= new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Return), this, SLOT(slotItemChecked()));
m_clrReturn = new QShortcut(QKeySequence(Qt::Key(Qt::CTRL) | Qt::Key_Return), this,
SLOT(slotItemChecked()));
#else
m_clrReturn
= new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(slotItemChecked()));