crossplatform.ru

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

История благодарностей участнику Rocky ::: Спасибо сказали: 22 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
7.5.2011, 14:43 Получение аргументов в GUI приложении
Стандартный конструктор класса-наследника от QMainWindow
MyClass(QWidget *pParent = 0, Qt::WFlags flags = 0);

Что мешает сделать его таким:
MyClass(QStringList sArgs, QWidget *pParent = 0, Qt::WFlags flags = 0);

И создавать класс так
MyClass obj(app.arguments());
obj....

???
RazrFalcon,
13.3.2011, 0:36 QTableWidget и список выделенных строк через Ctrl
Ну так все правильно ты и получаешь. У тебя selectedList что содержит? Айтемы а не ряды. Тебе нужно цикл по всем айтемам делать, а уже внутри разруливать через continue в случае если колонка айтема - не та, которая тебе нужна.
RazrFalcon,
28.2.2011, 19:34 grabWidget скрытого виджета
Цитата(mezmay @ 28.2.2011, 13:23) *
проверял, при hide()'e resizeEvent() не вызывается.

Он и не должен вызываться.

1. Зачем делать hide для того чтобы потом сграбить? Или, если есть такая необходимость, пробовал ли грабить _не_ делая hide?
2. m_maps[!m_bMap]->rect() - какие тут координаты? Выводи в qDebug, потом делай скриншот сам через внешнюю прогу, проверяй те ли координаты берутся (только ничего не смещай при этом).
3. Попробуй делать декомпозицию: написать тествый пример с минимум всего, что нужно для загрузки карты и дальнейшего grab-а. Возможно даже вообще без карт. А просто самый обычный рисунок грузи. Да хотя и рисунок не нужен. QWebView + любой сайт + hide + grabWidget. Таких чудес в принципе не бывает.
4. Скриншоты чтобы (возможно) понять нужны полностью всего содержимого окна программы в случае когда сам грабиш, и в случае когда это делает printscreen. Иначе вообще непонятно что куда и на сколько смещено.
mezmay,
20.2.2011, 20:46 Cells в QT при работе с MS Office
Ясно.

Цитата(breeve @ 20.2.2011, 13:13) *
QStringList list[cols];
.........
for(int j = 1; j < cols+1; j++) {
.........
if(str.isEmpty()) list[j].append("Empty");
else list[j].append(str);

Имхо криминал тут. Понятно почему? (нужно быть внимательнее с индексами)
breeve,
18.2.2011, 16:34 Image processing & Qt
Кто-нибудь знает, есть ли в Qt какие-нить классы, позволяющие делать обработку картинки по физическим процессам? Т.е. грубо говоря есть желание тут поучавствовать в конкурсе по лучшим мобильным приложениям. Вот подумал тут и решил такую прогу сделать. Типа есть тетка топлесс, и когда мобильник трясешь, чтоб ее тити тоже тряслись... У кого-нить идеи как это можно сделать? Я пока тока название придумал программы :)

Спасибо!
abc, igor_bogomolov, Obey-Kun,
17.2.2011, 17:00 Добавление субпроектов в .pro
RazrFalcon
./MyProject/Main.pro
TEMPLATE = subdirs

SUBDIRS  += Modules/Project1 \
            Modules/Project2 \
            Modules/Project3

CONFIG += ordered


./MyProject/Modules/Project1
TARGET = prjName
TEMPLATE = app
CONFIG += debug_and_release
CONFIG += warn_on
QT += ......
...........

и. т. д
RazrFalcon,
27.1.2011, 16:33 Рекурсивный перебор + QLabel
Цитата(breeve @ 27.1.2011, 15:50) *
Только не совсем понимаю как работает этот процесс ивентс

Ну, можно в assistant-е почитать... ;)

Доставляет все сообщения в главный цикл приложения. Отличный способ избавиться от "зависаний" программы во время совершения длительных операций.
breeve,
27.1.2011, 15:26 Рекурсивный перебор + QLabel
Так processEvents вызывается где-нибудь из рекурсивной функции или нет?
breeve,
26.1.2011, 8:58 Рекурсивный перебор + QLabel
Ну можно попробовать поставить задержку (через таймер) на начало работы функции, чтобы успело все отразиться, а потом из функции делать вызов qApp->processEvents().
breeve,
12.1.2011, 14:39 структура таблицы
См. исходники примера sqlbrowser.
Dovgon,
3.3.2010, 23:26 Критическая ошибка при выводе текста в делегате
Цитата(AntonH851 @ 3.3.2010, 23:16) *
Да пробовал...
не получилось найти....

Ну такого не бывает. Проверь все ректы на валидность. Просто я смотрю там разницы стоят иногда.. Они точно не отрицательные? К тому же что мешает последовательно комментировать строки, компилить и пробовать запустить? Сразу будет ясно после комменитирования какой строки вылета не будет. Значит в ней и ошибка.
AntonH851,
28.2.2010, 19:59 Всплывающие окна
Цитата(breeve @ 28.2.2010, 15:19) *
Ubuntu 9.10 - Karmic Koala..

ну да, это видно по иконке наверху слева ) А графическая оболочка гном?
breeve,
26.2.2010, 22:14 Запуск qt приложения на linux
Ну это надо либо статически пересобирать Qt на твоей машине (чтобы прога ни от чего не зависела), либо тягать с собой *.so 4.6.2 и при этом разобраться с ldconfig-ом. По-последнему можешь поискать по форуму, я сам недавно это спрашивал, мне объяснили что и как)
breeve,
26.2.2010, 22:04 Запуск qt приложения на linux
А сейчас какая версия Qt? Не понял, даже только что созданный проект с одной функцией main падает по segmentaion fault? А из creatora-запускал (дебаг версию)? Должен вывалиться на исключение или еще на что-то.. Ну хотя бы дизассемблированный код будет и можно будет хоть посмотреть стек вызовов и примерно понять где ошибка.
breeve,
12.2.2010, 19:36 OpenGL и Qt4
не забыл. допиши в проге вывод значений 3-х мерного массива в файл например.. а потом посмотри его запустив на машине на которой все серое. Мне кажетсячто дело в этом
registr,
7.2.2010, 21:06 Как синхронизировать QThread?
А QApplication::processEvents() тут не поможет?
DIMEDROLL,
6.2.2010, 23:58 Строка в DLL
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));


как пример
kalifriki,
19.11.2009, 22:43 Как получить свой внешний IP-адрес?
Вобщем, если кому нужно будет:
CDifferentSettingsDialog::CDifferentSettingsDialog(...)
{
...
    m_pHttp = new QHttp();
    QDialog::connect(m_pHttp, SIGNAL(done(bool)), this, SLOT(OnReadyRead()));
    m_pHttp->setHost("2ip.ru");
    m_pHttp->get("/index.php");
...
}
void CDifferentSettingsDialog::OnReadyRead()
{
    m_sCurrentDynIP = "";

    const QString sText = m_pHttp->readAll();
    const QRegExp oRegExp("((1{0,1}[0-9]{0,2}|2[0-4]{1,1}[0-9]{1,1}|25[0-5]{1,1})\\.){3,3}(1{0,1}[0-9]{0,2}|2[0-4]{1,1}[0-9]{1,1}|25[0-5]{1,1})");
    
    const int n = sText.indexOf(oRegExp);
    if (n == -1) return;

    m_sCurrentDynIP = sText.mid(n, 15);        //255.255.255.255
    const int nLength = m_sCurrentDynIP.length();
    for (int i = 0; i < nLength; ++i)
    {
        const QChar sSymbol = m_sCurrentDynIP.at(i);
        if (sSymbol.isDigit() || sSymbol == '.') continue;
        m_sCurrentDynIP.replace(i, 1, " ");
    }

    m_sCurrentDynIP = m_sCurrentDynIP.trimmed();
}
AD,
2.6.2009, 21:59 Cells в QT при работе с MS Office
Вспомнил что когда-то давно что-то писал на VBA. Вобщем, общая идея работы с ActiveQT - эта библиотека позволяет работать с любыми библиотеками/приложениями, поддерживающими COM. Список методов и свойств объектов можно посмотреть в tlb-хе соответствующего приложения (например, через OLEView). Если етсь *.tlh или idl-ник - можно и там напрямую через текстовые редакторы. В случае с Excel идеально помогает VBA. Запускаем Excel, жмем Alt+F11, пишем процедуру открытия книги например и там эксперементируем. По "F2" можно посмотреть список классов их методов и свойств. Выбираем метод - давим "F1", читаем как им пользоваться. Далее читаем документацию по функциям ActiveQt - querySubObject/dynamicCall/setProperty/property.

1. Как вставить картинку в ячейку?
На VBA будет так:
Worksheets(1).Shapes.AddPicture "filename.bmp", True, True, 100, 100, 70, 70

Пробовал переписать так:
QAxObject *pShape = pNewSheet->querySubObject("Shapes");
if (pShape)
{
           QAxObject *pShape2 = pShape->querySubObject("AddPicture(const QString&, bool, bool, int, int, int, int)", "filename.bmp", true, true, 100, 100, 70, 70);
           int z = 0;
}

не фурычит. pShape2 == NULL и картинка не грузица. В querySubObject если нужно вызывать функцию, нужно описать сигнатуру этой функции.. А сигнатура такая:
Function AddPicture(Filename As String, LinkToFile As MsoTriState, SaveWithDocument As MsoTriState, Left As Single, Top As Single, Width As Single, Height As Single) As Shape

Я много как пробовал: не хотит пока. Че писать пока не понял (особенно насчет MsoTriState)....

2. Как создать новый workbook и в нем sheet с заданным именем?

Создаем новую книгу (при этом совершенно необязательно что-то там открывать с диска)
QAxObject *pWorkbooks = m_pExcel->querySubObject("Workbooks");
if (!pWorkbooks)
{
         return NULL;
}

QAxObject *pWorkbook = pWorkbooks->querySubObject("Add");
if (!pWorkbook)
{
         return NULL;
}

QAxObject *pSheets = pWorkbook->querySubObject("Sheets");
if (!pSheets)
{
         return NULL;
}


Удалить листы можно так:
QAxObject *pSheet1 = pSheets->querySubObject("Item(const QString&)", qApp->tr("Лист1")); 
if (pSheet1) pSheet1->querySubObject("Delete");
QAxObject *pSheet2 = pSheets->querySubObject("Item(const QString&)", qApp->tr("Лист2"));
if (pSheet2) pSheet2->querySubObject("Delete");
QAxObject *pSheet3 = pSheets->querySubObject("Item(const QString&)", qApp->tr("Лист3"));
if (pSheet3) pSheet3->querySubObject("Delete");

Новый лист создать можно так:
//добавляем новый лист и обзываем его sSheetName
QAxObject *pNewSheet = pSheets->querySubObject("Add");
if (!pNewSheet)
{
          return NULL;
}
pNewSheet->setProperty("Name", sSheetName);



3. Как изменить формат представления данных в ячейке? (например, я ввожу число "5.2" - а отображается "5 февраля")
На VBA так:
Worksheets("Лист1").Range("A1").NumberFormat = "General"


На ActiveQT чет не особо работает. Поэтому решил проблему так:
//проверяем цифра ли sText или текст (чтобы заменить "." на ",")
bool bOK;
sText.toDouble(&bOK);

QString sText2 = sText;
if (bOK) sText2 = sText2.replace('.', ",");

//выводим в ячейку текст
pRange->dynamicCall("setValue(const QVariant&)", sText2);

//вот так пробовал, но формат особо не меняется
//pRange->setProperty("NumberFormat", "General");


4. Как изменить параметры страницы? (например, сделать лист альбомной ориентации, чтобы после вывода данных в excel пользователю в случае печати не нужно было ничего настраивать).

Вот так можно задать границы области печати (и задать ориентацию (собсно ка ViGOur писал выше)):
QAxObject *pPageSetup = pNewSheet->querySubObject("PageSetup");
if (pPageSetup)
{
          pPageSetup->setProperty("LeftMargin", 5);
          pPageSetup->setProperty("RightMargin", 5);
          pPageSetup->setProperty("TopMargin", 5);
          pPageSetup->setProperty("BottomMargin", 5);
          pPageSetup->setProperty("HeaderMargin", 5);
          pPageSetup->setProperty("FooterMargin", 5);
          pPageSetup->setProperty("Orientation", "xlLandscape");
}
Litkevich Yuriy,
5.3.2009, 0:27 Как запретить закрытие tab-вкладки при нажатии esc?
Странно... завтра приведу код как добавляю закладки.... просто если закладка активирована нажатием esc я ее могу закрыть... а это очень нежелательно... Насчет только ли в моей программе попробую в ассистанте, или пример поищу, точняк :) Может там нету такого...
igor_bogomolov,

RSS Текстовая версия Сейчас: 17.8.2019, 14:07