crossplatform.ru

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

История благодарностей участнику Trisch ::: Спасибо сказали: 24 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
6.7.2018, 17:14 QRegularExpression и кириллица
В тексте нужно найти слово целиком.

К примеру, в
У лукоморья дуб зелёный;
Златая цепь на дубе том:
И днём и ночью кот учёный


нужно найти слово "дуб"

использую такой способ:
auto exp = QRegularExpression(QString("\\bдуб\\b"));
bool find = txt.contains(exp);


При этом с англоязычным текстом все работает нормально.
Как это можно исправить?

Решил проблему. Нужно использовать флаг QRegularExpression::UseUnicodePropertiesOption
auto exp = QRegularExpression(QString("\bдуб\b"), QRegularExpression::UseUnicodePropertiesOption);
97WzugSKd31, 9or6UxhWRa1, DaLgAMYeVr1,
17.12.2014, 22:34 Вызвать слот из другого класса
Цитата(lexflax @ 17.12.2014, 19:45) *
Но теперь программа завершается крахом((( в чем может быть причина?(


При каких условиях программа падает?

Цитата(lexflax @ 17.12.2014, 19:45) *
не вызывает слот пишет
QObject::connect: No such signal Addnomenklatura::on_pushButton_clicked() in ..\one\mainwindow1.cpp:39
QObject::connect: (sender name: 'Addnomenklatura')
QObject::connect: (receiver name: 'MainWindow1')


наверное, нет такого сигнала. Подробнее о сигналах и слотах тут
lexflax,
17.12.2014, 18:04 Вызвать слот из другого класса
как то так:
void MainWindow1::on_pushButton_clicked()
{
    Addnomenklatura *n1 = new  Addnomenklatura;
    connect(n1, SIGNAL(сигнал()), this, SLOT(слот()));
    n1->show();

}
lexflax,
18.9.2014, 20:02 Как разместить один элемент поверх другого при динамическом создании окна
Цитата(gvenihvivar @ 18.9.2014, 14:09) *
Пробовала все приведенные варианты Trisch и по таймеру и по кнопке. Ничего. Работает только вот этот вариант вызываемый по таймеру. Я понимаю, что это не правильно, но как-то так.

pTextItem->setPlainText((tr(" P, %1 кг/см2 ").arg(p1)));



Здесь можно посмотреть тестовую программу



Как-то сильно мудрено, как для тестовой программы.
Обновление там не происходит, скорей всего, из за того что нечего обновлять, так как сцена не получает новые данные.

Передача сцене текстовых данных через setPlainText, вполне нормальный вариант)
gvenihvivar,
17.8.2014, 15:23 Перерисовка QGraphicsScene.
Нельзя void mouseReleaseEvent(QGraphicsSceneMouseEvent *event), сделать сигналом, так как это виртуальная функция.

надо определить новый сигнал и его уже послать из функции void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);

К примеру:

...
signals:
    void MySignal();
...

void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
...
    emit MySignal();
...
}
...
connect(node, SIGNAL(MySignal()), this, SLOT(MySlot()));
...
AlexandrosLiberalis,
11.8.2014, 22:02 Dragscroll QScrollArea внутри QGraphicsView
Как я понял вам надо при зажатии кнопки мыши над лейблалы можно было скролить?

Просто задайте объекту Form родителя.

Как-то так:
...
form = new Form(this);
...
Amadey,
7.8.2014, 20:48 Dragscroll QScrollArea внутри QGraphicsView
Да, надо переопределить события мыши mouseMoveEvent() для QGraphicsView.
Amadey,
26.3.2014, 16:20 Установка assistant'а на "пустой" машине
перенесите dll вместе с папкой sqldrivers.

И еще, возможно потребуются родные драйвера БД, их можно поискать здесь
inf,
13.3.2014, 18:58 Чтение/Запись вектора указателей из/в файл
Я вот тоже в указателях иногда путаюсь. Но вот думаю что проблема может быть тут:
QVector<Cube*>  *Data_Cubes;


сделайте так:
QVector<Cube>  *Data_Cubes; // указатель на вектор который хранит хначения Cube
//или так
QVector<Cube*>  Data_Cubes; // вектор который хранит указатели на значения Cube
//или так
QVector<Cube>  Data_Cubes; // вектор который хранит значения Cube


правильный вариант зависит от того что вам надо.
Not_Once,
9.3.2014, 13:09 Методы объектов одного класса, находящихся в разных потоках.
Если я вас правильно понял, то у каждого свой.
lss,
8.3.2014, 18:38 Изменение размеров Frameless окна
Ну тут можно поиграться с флагами, может что-то будет подходящее. К примеру Qt::Dialog, Qt::MSWindowsFixedSizeDialogHint или еще что-то в этом роде.
borune,
30.1.2014, 18:11 Взаимодействие С++ и qml
Ну можно зарегистрировать объект который будет посылать сигналы
qmlRegisterType<ObjectQML>("Object", 1, 0, "Object");


ObjectQML - это наш объект, который посылает сигналы. Потом из этого объекта послать сигнал, отловить и присвоить объекту который уже создан в нашем конкретном виджите. Как то так:
pView = new QQuickView;
pQML = new ObjectQML;
pView->setSource(QUrl("main.qml"));
QObject *pObject = pView->rootObject();
pQML = pObject->findChild<ObjectQML *>();


Каждый виджет создает свой объект QML, свой объект который будет отсылать сигналы. И, чисто теоретически сигналы и одного виджета, не должны пересекаться с другим
MishaUA,
3.12.2013, 2:55 Небольшая игра на qt
скорей всего надо переопределить mouseReleaseEvent().

То есть, я предполагаю, что у тебя фишки могут располагаться в центрах квадратов. Ты должен просчитать координаты этих центров, и потом при отпускании кнопки мыши должен определить какой центр ближе всего к фишке и задать фишке координаты данного центра. Ну как то так.
knf,
1.12.2013, 17:58 Небольшая игра на qt
ну, я же вроде написал.

устанавливаешь на поле фишку:
QGraphicsEllipseItem *pEllipseItem;
pEllipseItem = pScene->addEllipse(X, Y, R, R, QPen(Qt::red), QBrush(Qt::red));

И потом меняешь координаты:
pEllipseItem->setX(X1);
pEllipseItem->setY(Y1);

Все.
knf,
25.11.2013, 3:58 (MYSQL)При запуске программы Error: Driver not loaded
О, сталкивался с такой проблемой. Плагинов не хватает. Смотреть как и куда пихать здесь.
Dima2387,
10.9.2013, 0:42 Класс QSystemTrayIcon
В данном классе есть функция bool QSystemTrayIcon::event ( QEvent * e ), вот ее можно переопределить.

alsav22,
9.9.2013, 13:41 Класс QSystemTrayIcon
Не знаю, можно ли это сделать методами данного класса((

Но можно переопределить события мыши.
alsav22,
6.8.2013, 2:12 Несколько вопросов от новичка
Цитата(MishaUA @ 2.8.2013, 21:06) *
И еще вопрос:
Можно ли сигнал, который в qml файле коннектить к слоту из cpp файла? Только connect нужно сделать в самом cpp файле


Да, можно. Это делается примерно так:

QQuickView *pView = new QQuickView;
QObject *pObject = pView->rootObject();
connect(pObject, SIGNAL(сигнал из QML()), получатель, SLOT(слот()));


Цитата(MishaUA @ 2.8.2013, 13:38) *
да, в этом и была проблема. Обновил драйверы видеокарты и заработало)))
Следующая проблема с использованием QtQuick.Controls.
Есть такой код:
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
}

Как видите, тупо красный прямоугольник. На компе запускается правильно, на андроиде тоже. Если добавляю кнопку из QtQuick.Controls :
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
    Button { text: "gg"}
}

То на ПК она отображается, а на андроиде просто белый прямоугольник.
Стоит учесть, что qml файл находится в ресурсах.
Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом.
В чем тогда проблема?


ну тут ты мог указать полный путь к QML файлу, тогда на компе оно будет работать из любого места.

если файл QML берется из ресурсов, то это делается примерно так
pView->setSource(QUrl("qrc:/QML/main.qml"));
MishaUA,
31.7.2013, 18:41 Несколько вопросов от новичка
Возможно у тебя проблемы с OpenGL, попробуй обновить.
Кстати какая у тебя сборка Qt?
MishaUA,
28.7.2013, 17:05 Несколько вопросов от новичка
1. Если я правильно все понял, то можно не создавать

2. В разных QML файлах можно делать одинаковые id.
MishaUA,
16.12.2012, 1:43 Открытие одной формы по клику из другой
оно еще кучу всего попросит. И все нужные dll лежат в ../Qt/(номер версии библиотеки)/bin

И если обобщить все выше сказанное, то тебе надо сделать как то так:

class MainWindow : public QMainWindow
{
    ... // Тут конструкторы, деструктор, функции
private:
    history *hst;

slots:
    void open_history();
}

MainWindow::MainWindow()
{
    history *hst = new history();
    connect(history, SIGNAL(triggered()), this, SLOT(open_history()));
}

void MainWindow::open_history()
{
    hst->show();
}
lex_qt,
20.8.2012, 23:03 Перехват нажатия мыши вне окна приложения.
как вариант, сделать какой нибудь виджет прозрачным и развернуть на весь экран.

Но думаю должны быть варианты по проще)))
Danmerpro,

RSS Текстовая версия Сейчас: 9.12.2021, 7:21