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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 117 118 [119] 120 121 ... 140
1771  Программирование / С/C++ / Re: Как узнать о типе, до выполнения dynamic_cast? : Март 07, 2011, 12:00
Цитировать
Вот здесь второй вопрос. Есть момент, когда dt имеет указатель не инициализированный класс. Т.е. был объявлен указатель, но без вызова конструктора, потом его присвоили dt. Но, в таком случае, при проверке dynamic_cast вылетает системная ошибка (точнее сигнал от системы). Через особые ситуации я его отловить не смог (даже, через catch(...) ). Вот мне интересно, есть ли способ от него защититься или все же следить за тем, чтобы у указательных объектов перед из передачей указателю базового класса, использовались конструкторы?
Вот, вот, вместо того, чтобы сесть, тчательно подумать над архитектурой, проникнуться теорией, а уже потом имея фундамент, что то ваять, лучше тратить время на то, чтобы учится создавать костыли и костыли для костылей и т.д.
Герой на героине,
Героине на героине..
 Смеющийся

Цитировать
не возникнет ли у меня утечки памяти?
Возникнет, обязательно)

1772  Qt / Вопросы новичков / Re: Простые функции. : Март 07, 2011, 10:46
Не работает...
/home/sergey/Документы/TRPO/trpo.cpp:134: error: request for member ‘setText’ in ‘formyla’, which is of non-class type ‘QLabel*’
Мда... Скорей бы программы сами себя научились писать))
Код
C++ (Qt)
formula->setText(QString::number(i));
 

Чувствую на этом топик не закончится..
1773  Qt / Вопросы новичков / Re: Phonon и плеер : Март 06, 2011, 21:51
Phonon::MediaSource(QString(argv[1]))
Ы?
Хотя проблема наверное не в этом..
1774  Qt / Вопросы новичков / Re: Простые функции. : Март 06, 2011, 21:17
Всем добрый вечер.
Прошу не ругайть за очень простой вопрос.

Какая функция отвечает за возвидение в степень в qt?

Спасибо.
Никакая)

Это делает pow из cmath
1775  Qt / Вопросы новичков / Re: Выход из бесконечного цикла : Март 06, 2011, 20:18
Когда жмёте на крестик  Смеющийся вызывайте слот quit()
1776  Qt / Вопросы новичков / Re: Сортировка QList<QString> : Март 06, 2011, 20:07
Код
C++ (Qt)
bool comp(const QString &a, const QString &b) {
   return a.size() > b.size();
}
 
QList<QString> list; // или просто QStringList list
 
...
 
qSort(list.begin(), list.end(), comp);
 
1777  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 19:33
Цитировать
А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
я бы курил в сторону определения своего eventFilter:
bool eventFilter(QObject *obj, QEvent *event);
1778  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 18:48
Цитировать
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
Ааа... Ну раз сейчас такие костыли в порядке вещей.. Тогда наверно нужно зарегистрировать ваш тип MySpinBox*. Почитайте про
Q_DECLARE_METATYPE,
QMetaType
1779  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 18:19
Цитировать
Это понятно, спасибо, исправим. Хотя в доках написано, что
...
так что в теории должно быть без разницы.
Я вообщето это к тому, что аргументы у valueChanged(int) и у onValueChanged(int) должны быть int, а не MySpinBox*
1780  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 18:00
Устанавливаю так:
Код:
MySpinBox *dsb = new MySpinBox(MySpinBox::SpinBoxForTime); //MySpinBox наследован от QSpinDoubleBox
    connect(dsb,SIGNAL(valueChanged(MySpinBox*)),SLOT(onValueChanged(MySpinBox*))); //присоединение сигнала к слоту
    ui->tableWidget->setCellWidget(0,0,dsb);
в идеале хотелось  бы получить такой-же сигнальчик, как во второй строке кода, только по получению спинбоксом фокуса ввода.
Это не правильно. Так не надо устанавливать.
надо как то так:
Код
C++ (Qt)
connect(dsb, SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
 

QSpinDoubleBox - это в смысле QDoubleSpinBox.. или уже что то новое придумали?
1781  Программирование / С/C++ / Re: Как узнать о типе, до выполнения dynamic_cast? : Март 05, 2011, 13:42
Моментик... Я за пивом сбегаю))
1782  Программирование / С/C++ / Re: Как узнать о типе, до выполнения dynamic_cast? : Март 05, 2011, 12:43
Так, к слову:
Возможности RTTI на dynamic_cast не заканчиваются)
Есть ещё такая штука, как typeid
1783  Qt / Кладовая готовых решений / Re: Частный случай механизма сигнал-слот : Март 05, 2011, 03:47
Вышла версия 3.1.1

Добавлен следующий функционал:
1) Поддержка приоритета соединения: Теперь каждое соединение имеет свойство connection_priority:
Код
C++ (Qt)
template <class R_return>
int connection_priority(R_return (*slot)()) const
... // и так далее, для всех типов слотов
 

Обработка слотов идёт в порядке убывания этого значения, т.е. соединение с самым высоким значением обрабатывается первым и т.д.
При отрицательных значениях connection_priority соединение блокируется (не обрабатывается).

По умолчанию connection_priority = 0. Изменить его можно либо явно задав при создании соединения:
Код
C++ (Qt)
a.sig_a.connect(&b, &B::slot_b1, 1); // connection_priority = 1
 

либо с помощью метода:
Код
C++ (Qt)
template <class R_return, class R_arg>
bool set_connection_priority(R_return (*slot)(R_arg), int priority)
...
 
Если изменение приоритета прошло удачно, возвращает true, в противном случае false:
Код
C++ (Qt)
a.sig_a.set_connection_priority(&b, &B::slot_b4, 100); // connection_priority = 100
 


Пример использования:
Код
C++ (Qt)
#include <iostream>
#include "signal_slot.h"
 
using namespace std;
 
class A
{
public:
   ssc::signal<int> sig_a;
 
   void run() const {
       sig_a(123);
   }
};
 
class B : public ssc::trackable
{
public:
   void slot_b1(int x) {
       cout << "slot_b1, x = " << x << endl;
   }
 
   void slot_b2(int x) {
       cout << "slot_b2, x = " << x << endl;
   }
 
   void slot_b3(int x) {
       cout << "slot_b3, x = " << x << endl;
   }
 
   void slot_b4() {
       cout << "slot_b4" << endl;
   }
 
   void slot_b5() {
       cout << "slot_b5" << endl;
   }
};
 
int main()
{
   A a;
   B b;
   /* по умолчанию connection_priority = 0*/
   a.sig_a.connect(&b, &B::slot_b1, 1);
   a.sig_a.connect(&b, &B::slot_b2, 2);
   a.sig_a.connect(&b, &B::slot_b3, 3);
   a.sig_a.connect(&b, &B::slot_b4, 4);
   a.sig_a.connect(&b, &B::slot_b5, 5);
 
   a.sig_a.set_connection_priority(&b, &B::slot_b4, 100);
 
   cout << "slot_b1, priority = " << a.sig_a.connection_priority(&b, &B::slot_b1) << endl;
   cout << "slot_b2, priority = " << a.sig_a.connection_priority(&b, &B::slot_b2) << endl;
   cout << "slot_b3, priority = " << a.sig_a.connection_priority(&b, &B::slot_b3) << endl;
   cout << "slot_b4, priority = " << a.sig_a.connection_priority(&b, &B::slot_b4) << endl;
   cout << "slot_b5, priority = " << a.sig_a.connection_priority(&b, &B::slot_b5) << endl;
 
   cout << endl;
 
   a.run();
 
   return 0;
}
 

1784  Программирование / С/C++ / Re: Проблема с доступом к публик функции от базового класса для производного. : Март 04, 2011, 18:47
Цитировать
Код
C++ (Qt)
void setName(QString Name) {if (Name != NULL) this->_name = Name; else this->_name = "";}
 
Интересная конструкция))
1785  Программирование / С/C++ / Re: Где взять информацию про имеющиеся классы исключений на Си++? : Март 03, 2011, 16:08
Цитировать
Конечно так бывает, но посмотрим на конкретный класс NNumric: разве он знает что делать с ошибкой? Никак не знает, и ненужно/вредно было бы добавлять в него эту ф-циональность. Поэтому он должен выкинуть ошибку наверх, напр тому кто заряжал аргументы, а тот уж пусть разбирается. На мой взгляд здесь классический случай exception.
Ну я вообще то это всё к тому, что механизм сигнал-слот справляется с такой ситуацией (когда обработчик может исправить ситуацию и вернуть управление) справляется, согласитесь, изящьнее, нежели стандартный сценарий исключений)

К тому же, хочу заметить, что в самой функции (или в классе) exceptionHandler также можно кинуть обычное исключение, например если уж совсем всё плохо) :
Код
C++ (Qt)
void exceptionHandler(const exception_type &e) {
   if (e.arg2 == "Mein Gott!!!")
       throw MyException;
   cout << e.arg1 << endl;
   cout << e.arg2 << endl;
   cout << e.arg3 << endl;
   const double epsilon = 0.0000001;
   e.arg3 = epsilon;
}
 

 Подмигивающий
Страниц: 1 ... 117 118 [119] 120 121 ... 140

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