Russian Qt Forum

Qt => Общие вопросы => Тема начата: pupapum от Февраль 01, 2008, 15:12



Название: Однотипные функции
Отправлено: pupapum от Февраль 01, 2008, 15:12
Всем доброго времени суток... Ребят, пишу коннест для кнопки. Если слот без параметров, то работает замечательно, а если же передаю параметр, то отказывается работать. Что делать?


Название: Re: Однотипные функции
Отправлено: pastor от Февраль 01, 2008, 15:17
Приведите код


Название: Re: Однотипные функции
Отправлено: pupapum от Февраль 01, 2008, 15:44
Код:
#ifndef __HELLO_H__
#define __HELLO_H__
#include <QLineEdit>
#include <QPushButton>

class Good:public QWidget
{
Q_OBJECT
public:
Good(QWidget *parent=0);
private slots:
void func1();
public:
QLineEdit *edit;
QPushButton *btn1;
};

#endif // __HELLO_H__


#include "hello.h"
#include <QGridLayout>
#include <QDoubleValidator>
#include <QString>
#include <QmessageBox>
int k;
double arg;
double res;
Good::Good(QWidget *parent):QWidget(parent)
{
resize(300,300);
edit=new QLineEdit(this);
edit->setValidator(new QDoubleValidator(-999999.0,
             999999.0, 6, edit));
edit->setAlignment(Qt::AlignRight);
edit->setGeometry(10,10,280,25);
edit->clear();
  edit->setEnabled("False");
btn1=new QPushButton("1",this);

      QGridLayout *layout = new QGridLayout;
      layout->addWidget(edit,0,0);
      layout->addWidget(btn1,3,0);
 
      setLayout(layout);

connect(btn1,SIGNAL(clicked()),this,SLOT(func1()));
}

void Good::func1()
{
QString x = edit->text();
QString y = "1";
x.append(y);
edit->setText(x);
}


Здесь код без параметра. Если передаю параметр в коннекте, то все компилируется,но кнопка не работает.


Название: Re: Однотипные функции
Отправлено: pastor от Февраль 01, 2008, 15:58
Во-первых., пользуйся тегом Код
Во-вторых, какой смысл приводить код "без параметра", если не работает код "с параметром"? Приведи НЕРАБОЧИЙ код.


Название: Re: Однотипные функции
Отправлено: ритт от Февраль 01, 2008, 18:48
> edit->setEnabled("False");
как оно у тебя вообще компилится?!


Название: Re: Однотипные функции
Отправлено: Вячеслав от Февраль 01, 2008, 18:53
А в сторону QSignalMApper'а посмотреть ?! Чет мне кажеться вотпрос из этой епархии ....


Название: Re: Однотипные функции
Отправлено: pastor от Февраль 01, 2008, 20:14
имхо, просто при коннекте заданы не только типы но и имена параметров. Поэтому не коннектиться сигнал со слотом. Но это предположение. Без нерабочего кода трудно что сказать. Телепатов нет...


Название: Re: Однотипные функции
Отправлено: vaprele07 от Февраль 02, 2008, 03:55
Создаётся впечатление, что ты пытаешься не до конца всунуть вилку в розетку, чтобы у тебя была возможность впихнуть туда свои пальцы  ???
ЗЫ: можно задать параметрам значение по умолчанию при описании ф-ции...


Название: Re: Однотипные функции
Отправлено: Tonal от Февраль 02, 2008, 14:24
> edit->setEnabled("False");
как оно у тебя вообще компилится?!
Это код типа "враги не пройдут!"
Написано "False" - это константа, типа const char[6], которая компилятором трактуется здесь как const char*, и т.к. отлична от 0, преобразуется в True.

P.S. Это похоже на известный перл индийского кода на Java:
Код:
... myFunc(bool isEnable, ...) {
  if (isEnable.toString() == "True") {
    ...


Название: Re: Однотипные функции
Отправлено: Dodge от Февраль 11, 2008, 17:15
> edit->setEnabled("False");
как оно у тебя вообще компилится?!
Это код типа "враги не пройдут!"
Написано "False" - это константа, типа const char[6], которая компилятором трактуется здесь как const char*, и т.к. отлична от 0, преобразуется в True.

P.S. Это похоже на известный перл индийского кода на Java:
Код:
... myFunc(bool isEnable, ...) {
  if (isEnable.toString() == "True") {
    ...

нее... вот:
Код:
...
if ( isEnable.toString().length() < 5 ) {
...


Название: Re: Однотипные функции
Отправлено: Вячеслав от Февраль 11, 2008, 17:24
> edit->setEnabled("False");
как оно у тебя вообще компилится?!
Это код типа "враги не пройдут!"
Написано "False" - это константа, типа const char[6], которая компилятором трактуется здесь как const char*, и т.к. отлична от 0, преобразуется в True.

P.S. Это похоже на известный перл индийского кода на Java:
Код:
... myFunc(bool isEnable, ...) {
  if (isEnable.toString() == "True") {
    ...

нее... вот:
Код:
...
if ( isEnable.toString().length() < 5 ) {
...
Гы ;)
if ( isEnable.toString().length() < 5 && (isEnable.toString()[0]='t' || isEnable.toString()[0]='T'] ) {

Они-же там еще за количество знаков в проге деньги раншье получали ;)