crossplatform.ru

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

История благодарностей участнику igor_bogomolov ::: Спасибо сказали: 235 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
4.11.2010, 23:44 Text Finder ....
KLIF, твой код не смотрел, но когда то решал такую же задачу. Самому, на самом деле, было лень возиться, выдрал решение из исходников Qt Assistant.

Вот кусок кода
Раскрывающийся текст
void LogViewPlugin::findNext()
{
    find(ui->leSearch->text(), true);
}

void LogViewPlugin::findPrevious()
{
    find(ui->leSearch->text(), false);
}

void LogViewPlugin::findCurrentText(const QString &text)
{
    find(text, true);
}

void LogViewPlugin::find(const QString &ttf, bool forward)
{
    QPalette p = ui->leSearch->palette();
    p.setColor(QPalette::Active, QPalette::Base, Qt::white);

    bool found = false;

    found = findInTextBrowser(ttf, forward);

    if (!found && !ttf.isEmpty())
        p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));

    ui->leSearch->setPalette(p);
}

bool LogViewPlugin::findInTextBrowser(const QString &ttf, bool forward)
{
    QTextDocument *doc = ui->logView->document();
    QTextCursor cursor = ui->logView->textCursor();

    if (!doc || cursor.isNull())
        return false;

    QTextDocument::FindFlags options;

    if (cursor.hasSelection()) {
        cursor.setPosition(forward ? cursor.position() : cursor.anchor(),
            QTextCursor::MoveAnchor);
    }

    if (!forward)
        options |= QTextDocument::FindBackward;

    if (ui->cbSens->isChecked())
        options |= QTextDocument::FindCaseSensitively;

    bool found = true;
    QTextCursor newCursor = doc->find(ttf, cursor, options);
    if (newCursor.isNull()) {
        QTextCursor ac(doc);
        ac.movePosition(options & QTextDocument::FindBackward
            ? QTextCursor::End : QTextCursor::Start);
        newCursor = doc->find(ttf, ac, options);
        if (newCursor.isNull()) {
            found = false;
            newCursor = cursor;
        }
    }
    ui->logView->setTextCursor(newCursor);
    return found;
}
Попробуй, его адаптировать под себя.
KLIF,
1.11.2010, 21:18 Запуск приложения из под среды и не из под среды
mezmay, у меня все работает. Проверял на Windows Vista Qt4.7.0
mezmay,
1.11.2010, 15:25 QMenuBar
Как вариант, перекрыть в QMainWindow метод eventFilter и не пропускать нажатия на Alt
installEventFilter(this);

bool MainWindow::eventFilter(QObject *, QEvent *event)
{
    if (event->type() == QEvent::ShortcutOverride) {
        QKeyEvent *kev = static_cast<QKeyEvent*>(event);
        if ((kev->key() == Qt::Key_Alt || kev->key() == Qt::Key_Meta)
            && kev->modifiers() == Qt::AltModifier) {
            return true;
        }
    }
    return false;
}
wiz29,
31.10.2010, 23:17 Перевод руководств по началу работы с Qt и Qml
Проголосовал
Мне больше понравился этот вариант http://developer.qt.nokia.com/wiki/GettingStartedQtRussian
Kagami,
30.10.2010, 21:25 Упреждающее объявление (forward declaration) для шаблонных классов
Цитата(daorus @ 30.10.2010, 21:18) *
Какой синтаксис форвад-декларации для типа хеш, если я хочу в классе хранить на него указатель
Да все просто на самом деле

class QString;
template <class Key, class T>
class QHash;

class my
{
    public:
    my();
    QHash<QString, QString>* dic;
};

// my.cpp
#include <QHash>
my::my()
{
    dic = new QHash<QString, QString>;
}
daorus, Litkevich Yuriy, Алексей1153,
16.10.2010, 2:09 Css для QTableView
Цитата(Andrewshkovskii @ 15.10.2010, 13:16) *
осто, получается , что у виджета я делаю радиус на границах, а сама вьюха выезжает за границы виджета
Andrewshkovskii, попробуй такой вариант.

QTableView{
border: 1px solid #6c6c6c;
border-radius: 20px;
background-color:transparent;
gridline-color: gray;
}

QTableView QHeaderView{
  border-top-right-radius: 20px;
  border-bottom-left-radius: 20px;
  background-color:transparent;
}

QTableCornerButton::section{
border-top-left-radius: 20px;
}

Andrewshkovskii,
15.10.2010, 13:14 QTestLib - добавление массивов в таблицу данных
#include <QtTest>

Q_DECLARE_METATYPE(int *)

class Test_MyMathFunction : public QObject
{
    Q_OBJECT
private slots:
    void sumArrayt_data();
    void sumArrayt();
};

void Test_MyMathFunction::sumArrayt_data()
{
    int arr[5] = {1, 3, 0, -2, 4};
    int *a = arr;

    QTest::addColumn<int*>("arr");
    QTest::newRow("Test1") << a;
}

void Test_MyMathFunction::sumArrayt()
{
    QFETCH(int*, arr);
}

QTEST_MAIN(Test_MyMathFunction)
#include "tst_testtest.moc"
ivan_ivchenko,
15.10.2010, 11:29 Перехват MouseButtonDblClick на иконке в QTableWidgetItem/QTreeWidgetItem
Всем привет. Сейчас прослеживается приятная тенденция делиться своими наработками, которые могут оказаться полезными другим. У меня так же накопилось пару полезностей (на мой взгляд). Одну из них только что сделал. Это перехват событий от иконки в item'ах. Выкладываю в корыстных целях - может есть способ проще, не использующий недокументированных функций Qt?

Для этого нам нужно создать собственный делегат на основе QItemDelegate и переопределить метод editorEvent следующим образом
bool TreeWidgetDelegate::editorEvent(QEvent * event, QAbstractItemModel * model,
                       const QStyleOptionViewItem & option, const QModelIndex & index)
{
    if (event->type() != QEvent::MouseButtonDblClick)
          return QItemDelegate::editorEvent(event, model, option, index);

    QPixmap pixmap;
    QRect decorationRect;

    QVariant value = index.data(Qt::DecorationRole);
    if (value.isValid()) {
          pixmap = decoration(option, value);
          decorationRect = QRect(QPoint(0, 0), pixmap.size());

          QRect checkRect;
          Qt::ItemFlags flags = model->flags(index);
          if (flags.testFlag(Qt::ItemIsUserCheckable))
                checkRect = check(option, option.rect, Qt::Checked);

          QRect emptyRect;
          doLayout(option, &checkRect, &decorationRect, &emptyRect, false);

          QMouseEvent *me = static_cast<QMouseEvent*>(event);
          if (me->button() != Qt::LeftButton || decorationRect.contains(me->pos())) {
              qDebug() << "click icon!!!";
          }
          return true;
    }
    return QItemDelegate::editorEvent(event, model, option, index);
}
fsMark,
11.10.2010, 21:57 QPainter для самопального виджета
Ну второй вариант примерно так выглядеть будет
В класс Pb добавь bool eventFilter(QObject *obj, QEvent *event)
protected: // paintEvent в данном классе переопределять не надо
     bool eventFilter(QObject *obj, QEvent *event);


В конструкторе того же класса
Pb::pb(QFrame *parent):QFrame(parent)
{
    qwpb->installEventFilter(this);


реализация фильтра событий
 bool Pb::eventFilter(QObject *obj, QEvent *event)
{
     if (event->type() == QEvent::Paint && obj == qwpb) {
         QPaintEvent *e = static_cast<QPaintEvent *>(event);
         QPainter painter(this);
         painter.drawImage(...);
                 ... // здесь в общем то что нужно рисуешь
         return true;
     } else {
         return QObject::eventFilter(obj, event);
     }
}
anater,
11.10.2010, 11:11 C++ JavaScript и google maps api
Цитата(mezmay)
То есть у тебя при запуске появляется 2 маркера и надпись "script ok"?
Да, именно так. При этом, при нажатии на маркер, появляется надпись
Цитата
Вы нажали на первый маркер. Ура, ура, ура!!! :)


Версия Qt и платформа в подписи
mezmay,
8.10.2010, 13:27 Индекс элемента в массиве greh,
7.10.2010, 22:33 Наследование QPaintDevice
Что мешает заглянуть в исходнички и посмотреть как это делается. Наследников QPaintDevice хватает, у QPaintEngine тоже есть один
Grady,
7.10.2010, 15:48 убрать виджет с лайаута
Цитата(kwisp)
тебе владельца виджета сменить надо.
Если точнее, то родителя нужно обнулить, т.к. layout его принудительно назначает. Тек же, возможно, придется скрыть виджет в ручную QWidget::hide ()
ernie,
5.10.2010, 22:20 QWebPage::downloadRequested
Я имел в виду функцию down, в connect можно было ничего не менять (оба варианта правильны).
Почему у тебя не работает не знаю. Посмотри вот этот пример (ссылка), там, на сколько я понимаю, делается примерно то же самое, что пытаешься сделать ты
k0p4,
30.9.2010, 14:34 компиляция отдельного модуля библиотеки в Qt под Windows
Цитата(mannyz)
а в папке webkit есть какой-то .pri файл. я так понял он промежуточный, то есть его надо еще куда-то включить, чтобы все скомпилить.
в папке webkit есть подпапки webcore и webkit и JavaScriptCore. так мне надо отдельно в каждую папку заходить и компилить? или есть более централизованное решение?
Что бы собрать QtWebKit делаем так
$ cd QTDIR/src/3rdparty/webkit/WebCore 
$ qmake
$ make
Долго ждём, после чего наслаждаемся работой с новым модулем :)


Цитата(mannyz)
поясните, пожалуйста, для чего pri-файл
Это файл присоединяемый к файлу проекта (.pro) при помощи qmake-команды include. Обычно содержит различные настройки общие для нескольких проектов.
mannyz,
30.9.2010, 12:49 стандартные иконки QMessageBox::Icon
QIcon QStyle::standardIcon ( StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) const
quarz,
28.9.2010, 15:10 Проблемы с рисованием в QGraphicsView
Попробуй
graphicsView->viewport()->update();
wiz29,
27.9.2010, 22:47 Создание и использование динамических библиотек
Цитата(RazrFalcon @ 27.9.2010, 20:44) *
Краткое HOW TO пожалуйста.
Минимальный пример
Код библиотеки
testlib.h
#ifndef TESTLIB_H
#define TESTLIB_H

#include "test_global.h"
#include <QtCore/QString>

class SHARED_LIB_EXPORT TestLib {
public:
    TestLib();

    QString toUpper(const QString& str);
    QString toLower(const QString& str);
};

#endif // TESTLIB_H
testlib.cpp
#include "testlib.h"

TestLib::TestLib()
{
}

QString TestLib::toUpper(const QString& str)
{
    return str.toUpper();
}

QString TestLib::toLower(const QString& str)
{
    return str.toLower();
}
testlib_global.h
#ifndef TEST_GLOBAL_H
#define TEST_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(TEST_LIBRARY)
#  define SHARED_LIB_EXPORT Q_DECL_EXPORT
#else
#  define SHARED_LIB_EXPORT Q_DECL_IMPORT
#endif

#endif // TEST_GLOBAL_H
testlib.pro
QT       -= gui

TARGET   = test
TEMPLATE = lib

DEFINES += TEST_LIBRARY

SOURCES += testlib.cpp
HEADERS += testlib.h\
        test_global.h


Использование в проекте. Т.е. один из вариантов использования
main.cpp
#include <QtCore/QCoreApplication>
#include "../testlib/testlib.h"

#include <QtDebug>

int main()
{
    TestLib lib;
    qDebug() << lib.toUpper("test");
    qDebug() << lib.toLower("TesT");
    return 0;
}
usage_lib.pro
QT       += core
QT       -= gui

TEMPLATE = app
TARGET   = usage_lib
CONFIG  += console

LIBS += -L../testlib-build-desktop -ltest

SOURCES += main.cpp

Подробности в assistent'e
RazrFalcon,
26.9.2010, 18:19 Git. Как откатить удаленный репозиторий?
Цитата(BRE @ 26.9.2010, 14:52) *
Эээ... А как будет в командной строке?
$ git reset --hard <ревизия>
$ git push --force
Цитата(Litkevich Yuriy @ 26.9.2010, 16:18) *
П.С. при любых сомнениях делай ветку от текущей, текущую сбрасывай в последнее состояние. Так у тебя будет заначка в виде допветки.
у меня в некоторых хранилищах повисших веток с десяток. Есть не просят - пусть живут
Зачем копить кучу не нужных веток. Иначе вывод git branch превратится в полотенце. Читать трудно, да и вообще приимуществ ни каких. После того как слил наработки в рабочую ветку, временный бранч нужно удалять
BRE,
23.9.2010, 13:01 QTest::qSleep(1000) или QTest::qWait(1000)
Цитата(kibsoft)
В .pro файле добавить надо QT += testlib
Цитата(eldar85)
пробывал, выдает такую ошибку
c:/qt/2010.04/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
Потому что в переменную CONFIG нужно было добавлять

Цитата(assistant)
Applications that use Qt's unit testing classes need to be configured to be built against the QtTest module. To include the definitions of the module's classes, use the following directive:
#include <QtTest>
To link against the module, add this line to your qmake .pro file:
CONFIG += qtestlib
See the QTestLib Manual for a detailed introduction on how to use Qt's unit testing features with your applications.

eldar85, grio,
21.9.2010, 18:25 Релиз библиотеки Qt 4.7
Компания Nokia выпустила релиз кросс-платформенного фреймворка Qt 4.7, поддерживающего платформы Symbian и Maemo.

Основные новшества новой версии Qt:

  • Новая технология декларативного описания интерфейса приложения Qt Quick, которая позволяет легко динамически создавать пользовательский интерфейс с помощью QML, похожего на JavaScript языка программирования и C++ библиотеки QtDeclarative, которая превращает описание QML в элементы QGraphicsScene. В качестве языка для создания сценариев в QML используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками, представляющими собой определение JavaScript-объектов. QML-компоненты могут быть не только интегрированы в состав проектов на языке C++, но и работать в виде обособленных графических приложений, логика функционирования которых задана целиком на языке JavaScript.
  • Добавлен модуль для контроля состояния подключения системы к сети (Bearer Management API), позволяющего организовать управление сетевыми интерфейсами и проконтролировать нахождение системы в online-режиме.
  • Произведена оптимизация интерфейса библиотеки WebKit QtWebKit. Теперь поддерживается аппаратное ускорение вывода, что привело в увеличению скорости анимации на 31% . Скорость прокрутки веб страниц увеличена до четырёх раз. Тесты производительности CSS также показывают увеличение производительности на 31% по сравнению с Qt 4.6.
  • Представлен новый класс QStaticText, который позволяет значительно ускорить вывод текста.
  • В мультимедийном API добавлены средства для поддержки списков воспроизведения и прямого проигрывания мультимедийного контента через единый интерфейс с возможностью выбора метода вывода видео и типа используемых виджетов.
  • В состав Qt 4.7 включена обновлённая версия движка JavaScriptCore, что позволило улучшить производительность JavaScript.
  • В класс QPainter добавлена поддержка вывода фрагментов изображений.
  • Проведена большая работа по увеличению стабильности и производительности библиотеки. Qt 4.7 является первым выпуском, разрабатываемым в рамках новой системы непрерывного контроля качества (Qt Continuous Integration System), подразумевающего усиленных контроль за процессом добавления нового кода в Qt и выявления ошибок на ранней стадии.





ссылка на новость
Andrewshkovskii, Kagami, Litkevich Yuriy,
18.9.2010, 13:43 XML как входные данные
Цитата(ufna @ 18.9.2010, 1:05) *
А ведь если быть честным, то сохраняя XML через программу, инденты не сохраняются - там пустых мест нет. Наглядность?

Цитата(assistant)
void QDomNode::save ( QTextStream & str, int indent ) const
Записывает XML-представление узла и всех его потомков в поток str. Эта функция использует indent для определения величины отступа для подэлементов.
AD, ufna,
16.9.2010, 11:55 Ошибка invalid conversion from `QWidget*' to `QComboBox*'
oe_units = qobject_cast<QComboBox*>(PM->TABLE_ELITE->cellWidget(e, f));
kvak,
13.9.2010, 10:59 QSqlCipher; на другом пк: driver not loaded.
Цитата(AntonH851)
Это все?
Если папка с программой = папке где располагается exe файл запуска программы, то да, всё делаешь правильно.

Тем не менее видимо какие то зависимости не удовлетворены. Не знаю что и посоветовать. У меня не будет возможность сегодня проверить.
В Total Comander есть замечательная утилита показывающая зависимости dll и пути их поиска. Вызывается по F3 на dll'ке. Попробуй с ее помощью посмотреть что хочет qsqlcipher4.dll и где он это пытается найти

Ага, вот и Юра правильно подсказывает. Библиотека и программа должны быть собраны в одном режиме, либо debug, либо release
AntonH851,
3.9.2010, 21:08 SQLite и криптография
Цитата(AntonH851 @ 1.9.2010, 10:54) *
Если можно, подскажите пожалуйста, как можно исправить вышеуказанные ошибки
Была такая проблема, связанная с переходом на новую версию SQLite. Вроде разработчики пофиксили этот баг. Скачай новую версию sqlcipher v1.1.7, и попробуй собрать еще раз.

Подробнее этот вопрос обсуждается в SQLCipher Users
AntonH851,

9 страниц V  « < 2 3 4 5 6 > » 
RSS Текстовая версия Сейчас: 25.4.2024, 18:59