crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику DIMEDROLL ::: Спасибо сказали: 23 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
27.6.2011, 17:03 переход с VS integration k VS add-in
да. самый простой способ писать через on_...:
private slots:
    void on_reset_clicked();
    void on_pause_clicked();


просто дописываешь в хидернике обьявления и он сам будет вызываться по нажатию на кнопку
так же и для других контролов
mezmay,
8.6.2011, 10:52 QProcess сам завершает прогу
Цитата(RazrFalcon @ 7.6.2011, 21:34) *
Я пробовал:
load.waitForFinished(10000000);
Но толку 0.

естественно, посмотри доку по waitForFinished(), передавать нужно -1 если ты хочешь ждать пока процесс не завершится сам
RazrFalcon,
8.6.2011, 10:46 Qt и динамически подключаемые плагины.
Цитата
Как я понял, чтобы написать плагин и чтобы он работал на расширяемом приложении, нужно писать интерфейс, и чтобы об этом интерфейсе знало и само приложение и плагин, так?

да
плагины на то и плагины, что бы их могли писать сторонние разработчики
ты, как разработчик приложения предоставляешь SDK - набор хидерников и либ, которые используют сторонние разработчики, для создания плагинов
sidsukana,
8.6.2011, 10:41 QList<QLabel>
QList<QLabel*> labels;
labels.append(new QLabel(parent));


хранить нужно указатели на виджеты, а не сами обьекты
если при создании QLabel ты передаешь ему parent то об удалении можно не беспокоится, parent должен сам удалить всех своих детей, если не передаешь то очищать список нужно вручную, см. доку
 QList<QWidget *> list;
...
while (!list.isEmpty())
     delete list.takeFirst();
fortero,
21.8.2010, 11:54 Получение из бд русских символов и их пересылка в php
значит QVariant хранит QByteArray, там где // тут будем раскодировать напиши:

QByteArray bytes = v.toByteArray();
QString result = QString::fromUtf8(bytes.constData(), bytes.size());

теперь в result у тебя валидная строка и ее можно вывести в консоль или куда тебе угодно

см.:
QString::toAscii ()
QString::toLocal8Bit ()

У тебя какая ОСь и язык ОСи(локаль)? Какая кодировка консоли?
Zizilk,
15.7.2010, 13:52 QComboBox
зачем возится с map'ом если в QComboBox нужная функциональность уже есть
Wlad, правильно сказал, добавляешь:
ui->comboBox->addItem("Москва", QVariant(123));
ui->comboBox->addItem("Питер", QVariant(222));


получаешь
void MyWidget::on_comboBox_currentIndexChanged(int index) {
int number = ui->comboBox->itemData (index, int role = Qt::UserRole ).toInt();
}
eldar85,
14.7.2010, 7:29 Вопрос по с++
вижуал студия сразу выдает предупреждение:
Цитата
1>\testprocload.cpp(32) : warning C4930: 'A r1(std::string [])': prototyped function not called (was a variable definition intended?)
1>\testprocload.cpp(35) : warning C4930: 'A r2(std::string)': prototyped function not called (was a variable definition intended?)


Цитата
в С++ нельзя функцию объявить внутри другой (например, в main).

Что значит нельзя?
int main(int c, char ** v)
{
    int foo(int a);

    int r = foo(5);

    return 0;
}

int foo(int a){
    return a+=2;
}

отлично компилится
igor_bogomolov,
8.7.2010, 10:27 как сделать активной ссылку в QTextEdit
connect (ui.textBrowser, SIGNAL(backwardAvailable (bool)),ui.textBrowser, SLOT(backward ())

дело в том, что когда ты кликаешь на ссылку он пытается ее найти, понимает ее как внешнюю и открывет браузер, при этом как бы переходит вперед(forward())
вызывая backward(), ты переходишь назад и видишь свой документ

еще как вариант использовать QLabel, с openExternalLinks = true
создаешь QScrollArea, создаешь QVerticalLayout для него и добавляешь туда QLabel со своим текстом
eldar85,
7.7.2010, 22:00 как сделать активной ссылку в QTextEdit
что нагуглил?
надо курить ассистант :)
Цитата
void QTextBrowser::sourceChanged ( const QUrl & src ) [signal]
This signal is emitted when the source has changed, src being the new source.

Source changes happen both programmatically when calling setSource(), forward(), backword() or home() or when the user clicks on links or presses the equivalent key sequences.

с тебя 3 спасибо ;)
eldar85,
7.7.2010, 21:54 как сделать активной ссылку в QTextEdit
QDesktopServices::openUrl (QUrl("http://google.com") );
?
eldar85,
7.7.2010, 21:43 как сделать активной ссылку в QTextEdit
QDesktopServices::openUrl
?
eldar85,
7.7.2010, 21:24 как сделать активной ссылку в QTextEdit
QTextBrowser
?
eldar85,
7.7.2010, 12:08 C# dll и Qt
MJIbIu,
тут говорится:
Цитата
Давайте все таки определимся, чего вы хотите?
Импортировать библиотеку native-кода, написанную на C, или создать собственную библиотеку на C#, чтобы использовать ее функционал в unmanaged-коде?
Первое называется PInvoke и элементарно реализуется, второе - невозможно без инициирования CLR в unmanaged-процессе, исключение лишь составляют COM-объекты (для них ОС сама разворачивает CLR).

тоесть это невозможно
upd: разве что использовать COM

еще набрел на статью
но тут автор скорее всего перепутал С++ с С++ CLI(или как там его, тот что managed C++), еще почитаю статью...
upd: дочитал, автор утверждает что это unmanaged С++(Blitz в оригинальной статье)
по идее должно работать
попробуй сделать как там написано и отпишись получилось ли
исходный код лучше брать с англ. варианта статьи
MJIbIu,
20.4.2010, 18:30 как протестировать оператор присваивания и конструктор копирования класса?
Цитата(Litkevich Yuriy @ 20.4.2010, 17:41) *
я пока примитивный тест сделал (мой класс - простенький буфер):

я бы поступил так:
- Для классов которые не должны копироваться использую DISALLOW_COPY_AND_ASSIGN
- Для копируемых темплейтная фукция:
template<typename T>
void TestCopyAndAssign(const T & obj) {
  T copy(obj);
  assert((copy == obj) && "Testing copy failed");
  T assign;
  assign = obj;
  assert((assign == obj) && "Testing assign failed");
}

Весь код проверки находится в операторе сравнения(==). Для каждого класса не надо писать свою функцию теста, просто реализовать ==.
В реализации == обязательно проверять указатели на равенство. Например
class A {
public:
  B *b;
  //... all operators
  bool operator==(const A &obj) {
    assert((this->b != obj.b) && "Shit happened, object copying or assigning doesn't handle pointers");
    return *this->b == *obj.b;
  }
}
Litkevich Yuriy, Влад,
27.2.2010, 18:01 WindowsLauncher
В общем когда то 3 года назад написал для себя софтинку для замены стандартной автозагрузки Windows. Главной ее целью было и есть:
- возможность быстрой загрузки Windows(не загружая программы автозагрузки) - это требуется при каких то настройках системы, установке ПО которое требует перезагрузки, что бы не ждать пока загрузится Антивирус, Лингво, Аутлук и т.д. и т.п., а сразу приступать к работе
- автоматом апдейтить свн репозитории при загрузке компа

Таким образом, я каждое утро включая комп и после ввода пароля мог на 2-5 минут отойти от компа пока он загружался, обновлял репозитории и не делать рутину каждое утро. И наоборот, когда я перегружал комп и мне надо было не загружать автозагрузку я просто нажимал кнопку Quick Start и приступал к работе.

При первой настройке я запустил msconfig и отключил все что там было. Нужное добавил в WindowsLauncher. Это я к тому, что моя программа не лезет в стандартную автозагрузку и ничего не меняет в реестре.

Сейчас с выходом новых версий Кьют и новыми возможностями я немного проапдейтил прогу, добавил чекбоксы иконки, драги-дропы и всего потрошку и выложил на сорсфорж, авось кому то пригодится :)

В планах прикрутить дефрагментатор MyDefrag и дать пользователю возможность дефрагментировать и оптимизировать программы автозагрузки для ускорения онной. А так же сделать возможность не просто Quick start or Full start, а так же что то между этими значениями. Ну например когда грузятся не все программы автозагрузки а только браузер, инстант мессенджеры, винамп...

Линка на сие чудо вот. Там же есть и форум и баг трекер. Скриншоты и скомпиленная версия 1.03(не последняя).
Буду рад если кому то пригодится.
AD,
7.2.2010, 22:22 Вызов деструкторов при наследовании
нужно везде передавать QWidget *pParent, во всех конструкторах, например:
CCustomButton::CCustomButton(QWidget *pParent)
  : QPushButton(pParent) {
//...
}

и так для всех конструкторов твоих классов
если ты так и делаешь, значит не удаляется тот pParent который передается в конструктор, соответственно и его дети(child) - твои CCustomButton, тоже не удаляются
и виртуальным деструктор делать не надо:
virtual ~CCustomButton();

ибо если в QPushButton он виртуальный то в этом нету надобности, а если не виртуальный возможны косяки, пока незнаю какие..
Rocky,
30.1.2010, 15:16 QSettings и кирилица в INI-файле
ладно
я сам создал и без доп. телодвижений работает
QString::toLatin1()
Litkevich Yuriy,
4.1.2010, 15:37 Несколько вопросов про QTreeWidget
Цитата(breeve @ 4.1.2010, 14:27) *
connect(twg, SIGNAL(itemClicked(home, 0)), this, SLOT(welcome()));

правильно писать так:
connect(twg, SIGNAL(itemClicked(QTreeWidgetItem *, int )), this, SLOT(welcome(QTreeWidgetItem *, int)));

макрос SIGNAL принимает строку const char* в качестве параметра, сигнал и слот принимают только типы параметров а не сами данные
у сигнала и слота должны быть одинаковые параметры(в этом случае (QTreeWidgetItem *, int)) - это уточни в доке

лучше почитай в доке по методу QObject::connect()
breeve,
22.11.2009, 23:20 Свои объекты в QSet
Цитата(Andrewshkovskii @ 22.11.2009, 1:01) *
Почему, когда я пытаюсь сделать вот так вот :

if (!(ribs.at(k)->items() &= ribs.at(l)->items()).empty())


ribs это QVector <Cluster *>;
то получаю

error: passing 'const QSet<int>' as 'this' argument of 'QSet<T>& QSet<T>::operator&=(const QSet<T>&) [with T = int]' discards qualifiers



Что вообще обозначает данная ошибка?


Ошибка означает, что ты пытаешься изменить константный обьект. Когда ты пишешь
ribs.at(k)->items()

то получаешь:
const QSet<int>

и у этого вызываешь оператор &=, который изменяет обьект. Используй оператор & и будет работать все как надобно:
if (!(ribs.at(k)->items() & ribs.at(l)->items()).empty())

Andrewshkovskii,
29.10.2009, 10:27 Переработка графического интерфейса из Qt4 в C#
Цитата(kemiisto @ 29.10.2009, 0:09) *
Википедия это тот же забор, на котором много чего написано. ;) И причём там ведь в приведённом куске текста чёрным по белому написано [источник?] Я прошу, нет, я требую :) , источник!
P.S. Последнее время слишком часто сталкиваюсь с достаточно вольными трактовками лицензий. Или вот даже как в этой теме. Где-то что-то слышал... Зато заявления прям таки блещут категоричностью. :acute:

поддерживаю тебя в этом высказывании!

Вот что говорит майкрософт(источник):
Цитата
How will I license it exactly?
You will be able to license the UI via a simple click-through agreement on our website. You will also register your products that use the UI on the same website.

How much does it cost to obtain a license to the Office 2007 UI?
The license is provided at no cost. It is a royalty-free license.

Тоесть что бы использовать этот интерфейс нужно бесплатно зарегистрировать свой продукт.

Теперь по теме:
Как вы думаете, насколько легко изменить интерфейс приложения написанного на Кьют или wxWidgets, имеющее тулбары, менюшки, диалоги так, что бы теперь это приложение использовало Риббоны.
Просто меня уверяют что это займет очень мало времени, нужно лишь изменить оболочку :)
Litkevich Yuriy,
15.10.2009, 10:43 Быстро найти int в контейнере, какой пошустрее?
QSet быстр, ищет за константное время, эт значит что поиск любого элемента занимает одно и то же время и не зависит от кол-ва элементов.
Быстрым так же будет QVector если он будет отсортирован, для поиска элемента используешь алгоритм qBinaryFind, тоесть так:
QVector<int> my_vec;
my_vec.append(123);
....
qSort(my_vec);
qBinaryFind(my_vec.begin(), my_vec.end(), 123);



так у тебя будет быстрое добавление элементов, быстрый поиск(логарифмическое время) и минимальное кол-во потребляемой памяти. Медленным будет только сортировка, но если элементы не будут постоянно добавлятся то ее нужно будет вызвать только раз.

з.ы код не компилил, надеюсь идея ясна :)
trdm,
14.10.2009, 20:48 :-1: error: collect2: ld returned 1 exit status
Какой компилятор?
Ответ прост, им не поддерживается такая компиляция когда описание шаблона в хедере, а реализация в срр.
Я со студией тоже так когда то мучался :)
Знаю что какой то последний компилятор поддерживает такую компиляцию, непомню только название.
...Браузнул, Comeau, насколько я помню. Он же и больше всего соответсвует стандарту, но не бесплатен.
Выход: пиши реализацию в хедере
ЙаМайскЫйПчОЛ,

RSS Текстовая версия Сейчас: 22.11.2024, 16:02