Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 59

Правильная реализация СЛота !?

09.09.2012, 00:44. Показов 1002. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
У меня есть программа в которой я использую три слота, ввиду многочисленных ошибок, для поиска ошибки, код слотов одинаковый(абсолютно, скопировал). Но, работает только слот с названием cub_spline. И не важно какой из трех слотов я назову cub_spline работает именно он!!!
Вот часть кода:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
void Widget::cub_spline()
void Widget::linear_spline()
void Widget::akimaspline()
{
    int i;
    alglib::spline1dinterpolant S;
    std::vector<double> X_tmp;
    std::vector<double> Y_tmp;
    double tmp_x,tmp_y;
    int N_tmp;
 
    if (!FileName.isEmpty())
    {
        QFile MyFile(FileName);
        if(MyFile.open(QIODevice::ReadOnly))
        {
            QTextStream in(&MyFile);
 
            N=0;
            N_all=0;
            N_tmp=0;
 
            while(!in.atEnd())
            {
                if (in.atEnd()) break;
                in >> tmp_x >> tmp_y;
                if(N==0)
                {
                    X_tmp.push_back(tmp_x);
                    Y_tmp.push_back(tmp_y);
                    N++;
                }
                else if (Y_tmp.back()!=tmp_y || N_tmp==D  )
                {
                    X_tmp.push_back(tmp_x);
                    Y_tmp.push_back(tmp_y);
                    N++;
                    N_tmp=0;
                }
                N_all++;
                N_tmp++;
                x_plott_all.push_back(tmp_x);
 
            }
            emit valuechanged(N_all);
            X.setlength(N-1);
            Y.setlength(N-1);
 
            for(i=0;i<N;i++)
            {
                X[i]=X_tmp[i];
                Y[i]=Y_tmp[i];
            }
 
            alglib::spline1dbuildcubic(X, Y, S);
 
            for(i=0;i<N_all;i++)
            {
                plott.push_back(spline1dcalc(S, x_plott_all[i]));
            }
            emit save_s();
        }
    }
}
Здесь только код слотов, а вот и connect
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
connect(quit, SIGNAL(clicked()), this, SLOT(close()));
    connect(save, SIGNAL(save_s()),SLOT(save_file()));    
    connect(open, SIGNAL(clicked()),SLOT(open_file()));
    connect(save, SIGNAL(clicked()),SLOT(save_file()));
    connect(linear_sp, SIGNAL(clicked()), SLOT(linear_spline()));
    connect(akima_spline, SIGNAL(clicked()), SLOT(akimaspline()));     
    connect(cubic_sp, SIGNAL(clicked()), SLOT(cub_spline()));
    connect(this, SIGNAL(valuechanged(int)), lcd, SLOT(display(int)));
    connect(integerButton, SIGNAL(clicked()), this, SLOT(setInteger()));
 
    QVBoxLayout *layout = new QVBoxLayout;
    //layout -> setSpacing();
 
    layout -> addWidget(lcd);
    layout -> addWidget(open);
    layout -> addWidget(integerButton);
    layout -> addWidget(linear_sp);
    layout -> addWidget(cubic_sp);
    layout -> addWidget(akima_spline);
    layout -> addWidget(save);
    layout -> addWidget(quit);
    layout -> addWidget(integerLabel);
 
    QHBoxLayout *layout2 = new QHBoxLayout;
 
    layout2 -> addLayout(layout);
    layout2 -> addWidget(paint_window);
 
    setLayout(layout2);
Добавлено через 20 минут
Дополню,
закомментировал следующие строки и слоты
C++ (Qt)
1
2
connect(linear_sp, SIGNAL(clicked()), SLOT(linear_spline()));
connect(cubic_sp, SIGNAL(clicked()), SLOT(cub_spline()));
То есть остался только akimaspline слот.(код слотов все также одинаков), но по нажатии кнопки
C++ (Qt)
1
layout -> addWidget(akima_spline);
все равно не работает(ловит какое то исключение), а если остаавшийся слот переименовать в cub_spline() то работает по нажатии на кнопку cub_spline (connect которой с чем либо закомментирован)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2012, 00:44
Ответы с готовыми решениями:

Реализация сигнала-слота
bh = new BluetoothHandler(); //создаем объект класса, отвечающего за обработку и отправку данных connect(this,...

создание слота
#include &lt;QtGui&gt; #include &quot;mainwindow.h&quot; class cMy:public QObject { Q_OBJECT public slots: void doit(); }; void...

Создание слота
Почему не срабатывает слот?? class My:public QObject { Q_OBJECT public slots: void enabled(QTextEdit* textedit1) ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2012, 00:44
Помогаю со студенческими работами здесь

Корректное удаление слота
На форме есть слайдер, первоначально он назывался просто horizontalslider, я щелкнул правой кнопкой мыши на нем и выбрал перейти к слоту,...

Connect не доходит до слота
Добрый день. Такая проблема, что connect не заходит в слот, т.е. при дебаге нет прохода по слоту. Соединяется сигнал из одного класса и...

Соединение сигнала и слота
при попытке соединить слот и сигнал пишет 'QObject::connect' : none of the 3 overloads could convert QWidget wgt; QPushButton*...

Реализовать код без слота
Есть следующий код: void get_html::slotClickShowHtml() { // бла бла бла connect(m_pnam,...

QTimer запус слота по таймеру
Как сделать чтобы после определенного события запускался таймер и после этого таймера выполнялся Слот? Но если это событие повторяется, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru