yagabey
9th December 2008, 10:29
Hello,
I promoted a widget to a custom widget (scalableWidget)...But when i run the application i get a slot connection problem error like:
Object::connect: No such slot QWidget::setScaleVal(int)
Object::connect: (sender name: 'horizontalSlider')
Object::connect: (receiver name: 'widget')
I couldn't find anything wrong...What may be the problem...?
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
QObject::connect(ui.horizontalSlider, SIGNAL(valueChanged(int)), ui.widget, SLOT(setScaleVal(int)));
}
MainWindow::~MainWindow()
{
}
my custom widget:
#ifndef SCALABLEWIDGET_H
#define SCALABLEWIDGET_H
#include <QWidget>
#include <QPainter>
class scalableWidget : public QWidget
{
public:
scalableWidget(QWidget * parent = 0, Qt::WindowFlags f = 0);
qreal scaleFactor;
protected:
void paintEvent(QPaintEvent *event);
public slots:
void setScaleVal(int);
};
#endif // SCALABLEWIDGET_H
#include "scalablewidget.h"
scalableWidget::scalableWidget(QWidget * parent, Qt::WindowFlags f)
:QWidget( parent, f )
{
}
void scalableWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.scale(scaleFactor,scaleFactor);
}
void scalableWidget::setScaleVal(int comingValue)
{
scaleFactor=(qreal)comingValue;
}
generated file :
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QSlider>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>
#include "scalablewidget.h"
QT_BEGIN_NAMESPACE
class Ui_MainWindowClass
{
public:
QWidget *centralWidget;
scalableWidget *widget;
QPushButton *pushButton;
QPushButton *pushButton_2;
QSlider *horizontalSlider;
QMenuBar *menuBar;
QToolBar *mainToolBar;
QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindowClass)
{
if (MainWindowClass->objectName().isEmpty())
MainWindowClass->setObjectName(QString::fromUtf8("MainWindowClass"));
MainWindowClass->resize(600, 400);
centralWidget = new QWidget(MainWindowClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
widget = new scalableWidget(centralWidget);
widget->setObjectName(QString::fromUtf8("widget"));
widget->setGeometry(QRect(220, 30, 171, 131));
pushButton = new QPushButton(widget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(40, 30, 80, 25));
pushButton_2 = new QPushButton(widget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
pushButton_2->setGeometry(QRect(70, 80, 80, 25));
horizontalSlider = new QSlider(centralWidget);
horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider"));
horizontalSlider->setGeometry(QRect(70, 210, 160, 16));
horizontalSlider->setOrientation(Qt::Horizontal);
MainWindowClass->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindowClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 600, 23));
MainWindowClass->setMenuBar(menuBar);
mainToolBar = new QToolBar(MainWindowClass);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
MainWindowClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(MainWindowClass);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
MainWindowClass->setStatusBar(statusBar);
retranslateUi(MainWindowClass);
QMetaObject::connectSlotsByName(MainWindowClass);
} // setupUi
void retranslateUi(QMainWindow *MainWindowClass)
{
MainWindowClass->setWindowTitle(QApplication::translate("MainWindowClass", "MainWindow", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("MainWindowClass", "PushButton", 0, QApplication::UnicodeUTF8));
pushButton_2->setText(QApplication::translate("MainWindowClass", "PushButton", 0, QApplication::UnicodeUTF8));
Q_UNUSED(MainWindowClass);
} // retranslateUi
};
namespace Ui {
class MainWindowClass: public Ui_MainWindowClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H
I promoted a widget to a custom widget (scalableWidget)...But when i run the application i get a slot connection problem error like:
Object::connect: No such slot QWidget::setScaleVal(int)
Object::connect: (sender name: 'horizontalSlider')
Object::connect: (receiver name: 'widget')
I couldn't find anything wrong...What may be the problem...?
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
QObject::connect(ui.horizontalSlider, SIGNAL(valueChanged(int)), ui.widget, SLOT(setScaleVal(int)));
}
MainWindow::~MainWindow()
{
}
my custom widget:
#ifndef SCALABLEWIDGET_H
#define SCALABLEWIDGET_H
#include <QWidget>
#include <QPainter>
class scalableWidget : public QWidget
{
public:
scalableWidget(QWidget * parent = 0, Qt::WindowFlags f = 0);
qreal scaleFactor;
protected:
void paintEvent(QPaintEvent *event);
public slots:
void setScaleVal(int);
};
#endif // SCALABLEWIDGET_H
#include "scalablewidget.h"
scalableWidget::scalableWidget(QWidget * parent, Qt::WindowFlags f)
:QWidget( parent, f )
{
}
void scalableWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.scale(scaleFactor,scaleFactor);
}
void scalableWidget::setScaleVal(int comingValue)
{
scaleFactor=(qreal)comingValue;
}
generated file :
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QSlider>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>
#include "scalablewidget.h"
QT_BEGIN_NAMESPACE
class Ui_MainWindowClass
{
public:
QWidget *centralWidget;
scalableWidget *widget;
QPushButton *pushButton;
QPushButton *pushButton_2;
QSlider *horizontalSlider;
QMenuBar *menuBar;
QToolBar *mainToolBar;
QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindowClass)
{
if (MainWindowClass->objectName().isEmpty())
MainWindowClass->setObjectName(QString::fromUtf8("MainWindowClass"));
MainWindowClass->resize(600, 400);
centralWidget = new QWidget(MainWindowClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
widget = new scalableWidget(centralWidget);
widget->setObjectName(QString::fromUtf8("widget"));
widget->setGeometry(QRect(220, 30, 171, 131));
pushButton = new QPushButton(widget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(40, 30, 80, 25));
pushButton_2 = new QPushButton(widget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
pushButton_2->setGeometry(QRect(70, 80, 80, 25));
horizontalSlider = new QSlider(centralWidget);
horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider"));
horizontalSlider->setGeometry(QRect(70, 210, 160, 16));
horizontalSlider->setOrientation(Qt::Horizontal);
MainWindowClass->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindowClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 600, 23));
MainWindowClass->setMenuBar(menuBar);
mainToolBar = new QToolBar(MainWindowClass);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
MainWindowClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(MainWindowClass);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
MainWindowClass->setStatusBar(statusBar);
retranslateUi(MainWindowClass);
QMetaObject::connectSlotsByName(MainWindowClass);
} // setupUi
void retranslateUi(QMainWindow *MainWindowClass)
{
MainWindowClass->setWindowTitle(QApplication::translate("MainWindowClass", "MainWindow", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("MainWindowClass", "PushButton", 0, QApplication::UnicodeUTF8));
pushButton_2->setText(QApplication::translate("MainWindowClass", "PushButton", 0, QApplication::UnicodeUTF8));
Q_UNUSED(MainWindowClass);
} // retranslateUi
};
namespace Ui {
class MainWindowClass: public Ui_MainWindowClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H