crossplatform.ru

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

История благодарностей участнику Kagami ::: Спасибо сказали: 101 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
14.6.2009, 10:34 Графики, графики ...
Вот исходники. Они немного сыроваты, так как писал на скорую руку. Так что сильно не пинайте :)
В архиве 4 директории
1. bin - в ней будут созданы демонстрационный пример и библиотека
2. grapsh - собственно сама библиотека для построения лепестковой диаграммы. Пока реализован только базовый функционал, в демонстрационных целях.
3. lib - сюда кладется библиотека для линковки (автоматически, ручками ничего копировать не надо)
4. prog - демонстрационный пример. В нем ничего сложного, только необходимо отметить что на виде отключены полосы прокрутки и включен антиалиасинг. У меня в планах сделать наследника от GraphicsView и там все это жестко задать, плюс получить доступ к событиям изменения размера.
igor_bogomolov,
23.5.2009, 10:03 Как правильно писать благодарности?
Тогда ты сразу все правильно написал, запятые там не нужны
Litkevich Yuriy,
20.5.2009, 12:26 Выделение в таблице представления
Цитата
1. void QAbstractItemView::setSelectionBehavior(QAbstractItemView::SelectRows)
2. void QAbstractItemView::setSelectionMode(QAbstractItemView::SingleSelection)
AD,
19.5.2009, 11:37 QWizard
Ну.. все очень просто. В данном случае надо подключать сигналы изменения чекбоксов и комбобоксов к своему слоту, который уже будет в зависимости от их состояния заполнять поле ввода. В твоей программе такой расчет происходит только один раз - при конструировании страницы.
В свой слот надо выносить вот этот кусок:
Раскрывающийся текст
    double h, s1, s2, s3, summa;
    QString hstring, s1string, s2string, s3string;
    hstring = combo0902->currentText();
    s1string = combo0901->currentText();
    s2string = combo0903->currentText();
    s3string = combo0904->currentText();
    h = hstring.toDouble();
    s1 = s1string.toDouble();
    s2 = s2string.toDouble();
    s3 = s3string.toDouble();
    summa = 0;
    if (check0901->isChecked())
    {
        if ((h>=1.5) && (h<2.0))
        {
            // сверхтонкая стяжка
            summa += 1578.1 * s1;
        }
        else if ((h>=2.0) && (h<3.5))
        {
            // тонкая стяжка
            summa += 1623.9 * s1;
        }
        else if ((h>=3.5) && (h<=8.0))
        {
            // нормальная стяжка
            summa += 2040.5 * s1;
        }
    }
    if (check0903->isChecked())
    {
        summa += 4 * sqrt(s2) * 273.0;
    }
    if (check0904->isChecked())
    {
        summa += 2040.5 * s3;
    }

    QString value = QString::number(summa);
    summa09->setText(value);
FladeX,
14.5.2009, 14:06 QWizard
В конструкторе страницы делаем:
registerField("checkBox1", checkBox1);

В nextID():
if (field("checkBox1").toBool()) {
//Если выбрано
...
} else {
//Иначе
...
}

P.S. Если читать документацию внимательней, то необходимость в 80% темах отпадает :)
FladeX,
14.5.2009, 13:23 QMainWindow -> FullScreen
Цитата
void QWidget::setWindowState ( Qt::WindowStates windowState )

Sets the window state to windowState. The window state is a OR'ed combination of Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen, and Qt::WindowActive.
flankerr,
8.5.2009, 20:08 Глобальные Static переменные
У меня все работает...
defnull,
7.5.2009, 23:15 Игра "змейка":)
А так в целом неплохо получилось, так держать.

P.S. Хотя слово "lavel" меня немного покоробило ;)
igor_bogomolov,
7.5.2009, 22:58 Игра "змейка":)
У меня с ходу собрать не получилось... Линукс различает разный регистр в именах и не находит файлы

UPD: Проблема оказалась с GameField.h. При продвижении виджета он был записан как gamefield.h

UPD2: Да и инициализация переменных слегка кривая. Ее следует проводить в проредке их описания. Недавно на хабре статья была почему так не следует делать
Раскрывающийся текст
GameField.h: In constructor ‘GameField::GameField(QWidget*)’:
GameField.h:28: warning: ‘GameField::startlen’ will be initialized after
GameField.h:27: warning: ‘int GameField::len’
GameField.cpp:9: warning: when initialized here
GameField.h:27: warning: ‘GameField::len’ will be initialized after
GameField.h:25: warning: ‘QPoint GameField::shiftPoint’
GameField.cpp:9: warning: when initialized here
GameField.h:32: warning: ‘GameField::pause’ will be initialized after
GameField.h:20: warning: ‘QPixmap GameField::pixmap’
GameField.cpp:9: warning: when initialized here
GameField.cpp: At global scope:
GameField.cpp:202: warning: unused parameter ‘event’
igor_bogomolov,
5.5.2009, 13:35 событие смены текущей строки в QTableView
Не надо руками ничего переписывать. Просто почитай в справке про продвижение виджетов (promoting widgets), например в мануале по дизайнеру в главе "Using Custom Widgets with Qt Designer" или в книжке Жасмин Бланшет раздел "Интеграция пользовательских виджетов в QtDesigner" в главе 5
512es,
10.4.2009, 18:25 Xml - обращение к дочернему элементу
А какие значение возвращает currentId() ?
FladeX,
9.4.2009, 13:25 Xml - обращение к дочернему элементу
Из-за области видимости переменной. Если ее создавать в условии, то в его конце она будет удалена
FladeX,
8.4.2009, 21:59 Xml - обращение к дочернему элементу
Посидел десять минут, но раскусил этот орешек:
Раскрывающийся текст
void ExpertSystem::showHelp()
{
static QString lastHelpMessage;

QString message;
QDomDocument doc;
QFile file("/home/opensuse/qt/expertsystem/help.xml");
if (!file.exists())
{
QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 001. Файл help.xml не существует"));
}
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 002. Невозможно открыть файл help.xml"));
return;
}
if (!doc.setContent(&file))
{
QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 003. Невозможно прочитать файл help.xml"));
file.close();
return;
}
//Второй раз устанавливать содержимое не надо
doc.setContent(&file);


// В результате получим pageid равное числу...
QString pageid = QString::number(currentId());
QString pageid = "page" + QString("%1").arg(1, 2, 10, QChar('0'));

//Вот нафига заводить еще один документ? Если мы уже все загрузили в doc
QDomDocument domDocument;
QDomElement root = domDocument.documentElement();

QDomElement root = doc.documentElement();
//help у нас корневой элемент и уже содержится в root. Второй раз его искать не надо
QDomElement help = root.firstChildElement("help");
//С учетом вышесказанного эта строка не правильная
QDomElement child = help.firstChildElement("page");
QDomElement child = root.firstChildElement("page");

while (!child.isNull())
{
if (child.attribute("id") == pageid)
{
QDomElement mess = child.firstChildElement("message");
message = mess.text();
//message = pageid;
}
child = child.nextSiblingElement("page");
}
file.close();

//if (lastHelpMessage == message)
// message = tr("");

QMessageBox::information(this, QObject::trUtf8("Подсказка"), message);

lastHelpMessage = message;
}


P.S. Жалко что нельзя раскрашивать код, только так :(
FladeX,
7.4.2009, 10:58 QtreeView и корневой элемент
Да
Sokoloff,
6.4.2009, 17:44 QtreeView и корневой элемент
Да. Для удобства его можно использовать в качестве заголовка

Небольшая цитата:
Цитата
It is up to the constructor to create a root item for the model. This item only contains vertical header data for convenience. We also use it to reference the internal data structure that contains the model data, and it is used to represent an imaginary parent of top-level items in the model.
Sokoloff,
29.3.2009, 11:18 Ошибки в исходной документации
demos-mediaplayer-mediaplayer-cpp.html
Цитата
//we just ignore the cose events on the video widget

Судя из контекста имелось в виду close
Litkevich Yuriy,
27.3.2009, 23:33 Xml - обращение к дочернему элементу
Цитата(igor_bogomolov @ 27.3.2009, 23:27) *
Ваш же пример выдаёт не то что мы ожидаем.

Упс, небольшая очепятка всралась :)
Правильно так:
qDebug() << message.text();
FladeX,
27.3.2009, 18:15 Xml - обращение к дочернему элементу
Есть решение немного по-изящнее:
Раскрывающийся текст
    QDomElement root = domDocument.documentElement();
    QDomElement child = root.firstChildElement("page");
    while (!child.isNull()) {
        if (child.attribute("id") == "page01") {
            QDomElement message = child.firstChildElement("message");
            qDebug() << child.text();
        }
        child = child.nextSiblingElement("page");
    }

Перебираем только нужные элементы и не чувствительны к положению <message> - в предыдущем примере он обязан находиться в конце.
FladeX,
26.3.2009, 20:25 Какими средствами можно построить 3-х мерный график? Rocky,
25.3.2009, 23:39 Перевод от Kagami
kagami-9.zip - richtext-orderform.html
AD, Litkevich Yuriy, ViGOur,
24.3.2009, 9:47 [Решено] Стиль skulpture
Вот кусок из ассистанта
Цитата
QSettings stores settings for an application in up to four locations, depending on whether the settings are user-specific or system-wide and whether the the settings are application-specific or organization-wide. For simplicity, we're assuming the organization is called MySoft and the application is called Star Runner. If the file format is IniFormat, the following files are used on Unix and Mac OS X:
$HOME/.config/MySoft/Star Runner.ini (Qt for Embedded Linux: $HOME/Settings/MySoft/Star Runner.ini)
$HOME/.config/MySoft.ini (Qt for Embedded Linux: $HOME/Settings/MySoft.ini)
/etc/xdg/MySoft/Star Runner.ini
/etc/xdg/MySoft.ini
On Windows, the following files are used:
%APPDATA%\MySoft\Star Runner.ini
%APPDATA%\MySoft.ini
%COMMON_APPDATA%\MySoft\Star Runner.ini
%COMMON_APPDATA%\MySoft.ini
The %APPDATA% path is usually C:\Documents and Settings\User Name\Application Data;
SABROG,
22.3.2009, 21:50 Объявление для Qt RTT
Debian 5.0 "Lenny"

Переписал скрип для генерации файлов справок:
#!/bin/sh

cd html
qhelpgenerator assistant_ru.qhp -o ../assistant_ru.qch
qhelpgenerator designer_ru.qhp -o ../designer_ru.qch
qhelpgenerator linguist_ru.qhp -o ../linguist_ru.qch
qhelpgenerator qmake_ru.qhp -o ../qmake_ru.qch
qhelpgenerator qt_ru.qhp -o ../qt_ru.qch

# using read instead of pause
read


Добавил полученные файлы в Assistant. Все нормально, но есть несколько "но".. Во-первых, сразу убила фраза "Учебные пособия & Примеры". Мгновенно вспомнился анекдот "Ничего что я по-английски?" :)
Во-вторых, старая проблема, про которую я писал здесь, никуда не делась :(
Litkevich Yuriy,
22.3.2009, 10:08 Помогите перевести термины
http://www.study.ru/lessons/preintermediate4-2.html

Т.е. have not to be следует переводить как не обязан быть
Litkevich Yuriy,
12.3.2009, 23:33 Перевод от Kagami
После небольшой паузы выкладываю очередной перевод:
  1. kagami-8.zip - richtext-calendar.html
Litkevich Yuriy, ViGOur,
12.3.2009, 19:41 Как запретить закрытие диалогового окна при нажатии esc?
При нажатии кнопки Esc вызывается слот QDialog::reject(). Вот его и надо переопределить в своем диалоге, например, чтобы он ничего не делал.
Rocky,

4 страниц V  < 1 2 3 4 >
RSS Текстовая версия Сейчас: 25.8.2019, 20:44