Russian Qt Forum
Ноябрь 24, 2024, 11:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Ошибка в программе. Сигналы и слоты.  (Прочитано 21681 раз)
mutineer
Гость
« Ответ #30 : Декабрь 13, 2012, 22:38 »

Вот тебе простейший пример с реакцией на нажатие кнопки
http://code-live.ru/post/getting-started-qt/
Записан
bars268
Гость
« Ответ #31 : Декабрь 13, 2012, 23:10 »

Все, я сдаюсь. Так и не получилось
Записан
mutineer
Гость
« Ответ #32 : Декабрь 13, 2012, 23:12 »

По ссылке пример проще некуда. Что могло не получиться?
Записан
bars268
Гость
« Ответ #33 : Декабрь 13, 2012, 23:15 »

Там не то что у меня...\И даже не похоже
Записан
mutineer
Гость
« Ответ #34 : Декабрь 13, 2012, 23:17 »

Там  есть кнопка, по нажатию этой кнопки выполняются некие действия. Это практически то же самое, что и у тебя
Записан
bars268
Гость
« Ответ #35 : Декабрь 13, 2012, 23:21 »

какое то действие... все равно не понимаю. тупик(
Записан
mutineer
Гость
« Ответ #36 : Декабрь 13, 2012, 23:23 »

мда... ну не понимай дальше, раз не можешь нормально описать проблему
Записан
bars268
Гость
« Ответ #37 : Декабрь 13, 2012, 23:32 »

Проблема в том что я не понимаю что и как писать в "*.h"
Записан
mutineer
Гость
« Ответ #38 : Декабрь 13, 2012, 23:41 »

Видимо проблема в том, что ты не умеешь работать с классами в С++. Я прав?
Записан
bars268
Гость
« Ответ #39 : Декабрь 13, 2012, 23:53 »

видимо да
Записан
mutineer
Гость
« Ответ #40 : Декабрь 14, 2012, 00:02 »

Ну значит начинать тебе надо не с Qt, а с ООП и С++
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #41 : Декабрь 14, 2012, 07:37 »

Ну значит начинать тебе надо не с Qt, а с ООП и С++
Я бы не был столь категоричным.
Всё-таки с сигналами/слотами есть некоторые нюансы с ООП и С++ несвязанные.
Например, описание класса с Q_OBJECT по дефолту должно быть в *.h.
Что совсем не очевидно и меня очень часто неимоверно раздражает.
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #42 : Декабрь 14, 2012, 08:10 »

Я бы сказал проще - человеку нехватает знания разделов и технологии построения ООП в С++ Улыбающийся

Я б посоветовал поделать примеры по книге любой.
Записан
carrygun
Гость
« Ответ #43 : Декабрь 14, 2012, 09:01 »

Сейчас открыл справку по сигналам/слотам, там все расписано довольно адекватно с примерами (в том числе и
Цитировать
что и как писать в "*.h"
) и даже с картинками.
Что конкретно вызывает затруднение? Мне кажется, что система даже интуитивно понятна.
Записан
bars268
Гость
« Ответ #44 : Декабрь 14, 2012, 10:37 »

Вроде написал, но не пойму что теперь не так
counter.h
Код:
#ifndef WIDGET_H
#define WIDGET_H

#include <QObject>
#include <QTextEdit>
#include <QString>


class Counter : public QObject
{
    Q_OBJECT
public:
    QTextEdit          edit;
    QTextEdit          fintext;
    Counter();
    QString AddColor(QString text);
    QString ColorChoose();

public slots:
    void SetString();
private:
    QString tekst;
};
#endif
main.cpp
Код:
#include <QtGui/QApplication>
#include <QWidget>
#include <QPushButton>
#include <QTextBrowser>
#include <QBoxLayout>
#include <QTextEdit>
#include <QString>
#include <QLabel>
#include "counter.h"
//////////////////////////////////////////
Counter::Counter() : QObject()
{
}
void Counter::SetString()
{
    tekst=edit.toPlainText();
    fintext.setText(AddColor(tekst));
}
//////////////////////////////////////////

int main(int argc, char *argv[])
{
    QApplication        a(argc, argv);
    QWidget             wgt;
    QPushButton*        but  = new QPushButton("Go");
    Counter             counter;


    QBoxLayout* lo = new QBoxLayout(QBoxLayout::TopToBottom);
    lo->addWidget(&counter.edit, 1);
    lo->addWidget(&counter.fintext, 1);
    lo->addWidget(but, 1);
    wgt.setLayout(lo);

    counter.fintext.setReadOnly(true);

    wgt.resize(600,200);
    wgt.show();
    QObject::connect(but,SIGNAL(clicked()), &counter.fintext,SLOT(SetString()));

    return a.exec();
}

QString Counter::AddColor(QString text)
{
    QString Text2;
    QString temp;
    for (int i=0;i<text.length();i++)
    {
        temp=text[i];
        Text2.append("[color=");
        Text2.append(ColorChoose());
        Text2.append("]");
        Text2.append(temp);
        Text2.append("[/color]");
    }
    return Text2;
}

QString Counter::ColorChoose()
{
    QString color;
    int range=15;
    int min=1;
    int colorID=rand() % (range+1) + min;
    switch (colorID)
    {
    case 1:
        color="Blue";
        break;
    case 2:
        color="Red";
        break;
    case 3:
        color="Yellow";
        break;
    case 4:
        color="Purple";
        break;
    case 5:
        color="Green";
        break;
    case 6:
        color="Olive";
        break;
    case 7:
        color="Crimson";
        break;
    case 8:
        color="Magenta";
        break;
    case 9:
        color="OrangeRed";
        break;
    case 10:
        color="DeepPink";
        break;
    case 11:
        color="DarkOrange";
        break;
    case 12:
        color="Tomato";
        break;
    case 13:
        color="Lime";
        break;
    case 14:
        color="Aqua";
        break;
    default:
        color="Black";
        break;
    }
    return color;
}
Программа запускается и компилируется, слот прописал, сигнал же не нужен (?) (ведь сигналом служит clicked())
Но при нажатии ничего не происходит
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.