PDA

View Full Version : مشکل در connect



A.iman
شنبه 15 تیر 1392, 22:31 عصر
سلام
من یه کدی نوشتم که یه وردی میگیره و به عدد تبدیل میکن و بعدش با سیگنال و اسلوت میفرسته به یه لیبل برای نمایش ....
ولی هرکاری میکنم کامپایل نمیشه! همینطوری اونجا میمونه! نه صحفه ای نمایش داده میشه و نه ...
.h



class MYWIDGET : public QWidget{
Q_OBJECT
QLineEdit *li;
public:
MYWIDGET(QWidget * parent=0);
signals:
void mysingnal(int);
private slots :
void myslot(int);
};
cpp

#include "mainwindow.h"
#include <QApplication>
#include <QLineEdit>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MYWIDGET my;
QLabel lbl;
QObject::connect(&my,SIGNAL(mysingnal(int)),&lbl,SLOT(setNum(int)));
return a.exec();
lbl.show();
my.show();
}
MYWIDGET::MYWIDGET(QWidget *parent):QWidget(parent){
QPushButton *btn =new QPushButton("enter",this);
QLineEdit * li = new QLineEdit(this);
li->move(50,50);
}
void MYWIDGET::myslot(int){
int num = li->text().toInt();
emit mysingnal(num);
}


http://upload7.ir/images/97989941050039985931.png

rubiks.kde
شنبه 15 تیر 1392, 22:36 عصر
کل کد برنامتون همینه؟

A.iman
شنبه 15 تیر 1392, 22:46 عصر
اره ...
ولی کتابخانه های فایل .h رو ننوشتم ....

omidshaman
شنبه 15 تیر 1392, 23:12 عصر
این 2 خط



lbl.show();
my.show();
باید قبل از

return a.exec();
باشه

A.iman
یک شنبه 16 تیر 1392, 00:20 صبح
دستت درد تکته ... ولی بازم کار نمیکنه ! یعنی توی لاین ادیت عدد رو میگیره ولی توی لیبل نشون نمیده !

rubiks.kde
یک شنبه 16 تیر 1392, 08:25 صبح
دستت درد تکته ... ولی بازم کار نمیکنه ! یعنی توی لاین ادیت عدد رو میگیره ولی توی لیبل نشون نمیده !

شما توی کد چه موقع سیگنال رو emit میکنید ؟ از اسلات myslot کی استفاده میکنید؟

حامد مصافی
یک شنبه 16 تیر 1392, 09:04 صبح
کدت رو به این شکل تغییر دادم:

main.cpp
#include <QApplication>
#include <QLabel>
#include "mywidget.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
myWidget my;
QLabel lbl;

QObject::connect(&my,SIGNAL(mysingnal(int)),&lbl,SLOT(setNum(int)));
lbl.show();
my.show();
return a.exec();
}



mywidget.h
#include <QWidget>

class QLineEdit;
class myWidget : public QWidget{
Q_OBJECT
QLineEdit *li;
public:
myWidget(QWidget * parent=0);
signals:
void mysingnal(int);

private slots:
void btn_clicked();
};


mywidget.cpp
#include <QPushButton>
#include <QLineEdit>

#include "mywidget.h"

myWidget::myWidget(QWidget *parent):QWidget(parent){
QPushButton *btn = new QPushButton("enter",this);
li = new QLineEdit(this);
li->move(50,50);
connect(btn, SIGNAL(clicked()), this, SLOT(btn_clicked()));
}

void myWidget::btn_clicked()
{
int num = li->text().toInt();
emit mysingnal(num);
}