Ответы пользователя по тегу Qt
  • Как сделать красиво загрузку?

    @developerxyz
    Это окошко реализуется в Qt с помощью класса QSplashScreen
    Создаем QSplashScreen с QPixmap для заднего фона
    QSplashScreen splashScreen(/*const QPixmap& pixmap*/ QPixmap("/путь/до/вашей/картинки.png"));

    Далее показываем это окошко
    splashScreen.show(); //возвращает void
    И выставляем текст (это просто показывает текст, можно использовать между QSplashScreen::show(); и QSplashScreen::finish();
    splashScreen.showMessage(
        /*const QString &message*/ "Сообщение",
        /*int alignment = Qt::AlignLeft*/ Положение текста,
        /*const QColor &color = Qt::black*/ Цвет QColor);

    Положение текста - битовая комбинация вертикального и горизонтального выравнивания
    Qt::Alignment
    Горизонтальное выравнивание
    КонстантаЗначениеОписание
    Qt::AlignLeft0x0001Выравнивание по левому краю
    Qt::AlignRight0x0002Выравнивание по правому
    краю
    Qt::AlignHCenter0x0004Выравнивание по центру
    (горизонтально)

    Вертикальное выравнивание
    КонстантаЗначениеОписание
    Qt::AlignTop0x0020Выравнивание по верху
    Qt::AlignBottom0x0040Выравнивание по низу
    Qt::AlignVCenter0x0080Выравнивание по центру
    (вертикально)
    Немного больше флагов (англ.)
    Можно использовать не более одного ключа из одной группы.
    Пример: Qt::AlighVCenter | Qt::AlignHCenter - по абсолютному центру окна

    Для завершения QSplashScreen надо вызвать функцию finish:
    splashScreen.finish(/*QWidget * mainWin*/ this); //this если ваш класс наследуется от QWidget

    Эта функция будет ждать показа окна mainWin и только после этого QSplashScreen закроется.

    Это самые простые функции. Если надо "что-то посложнее", то берем и создаем свой SplashScreen и отрисовываем сами (так же, как и в QWidget-е)
    Надеюсь, что мой ответ Вам помог.
    Ответ написан
    Комментировать
  • Как преобразовать QString в массив байтов?

    @developerxyz
    У QByteArray есть метод data(), возвращающий char* на данные массива.
    char * QByteArray::data();
    const char * QByteArray::data() const;


    Конвертация QString в char*:
    QString login_str = /*ваш код для получения строки*/ ui->loginEdit->text();
    QByteArray login_ba = login_str.toUtf8();
    /*
    QString::toUtf8() вернет QByteArray в кодировке UTF-8.
    QString::toLatin1() вернет QByteArray в кодировке Latin-1 (CP819).
                        Предупреждение: если строка содержит символы, которые не доступны в
                        кодировке Latin-1, результат функции неизвестен. Эти символы могут
                        быть заменены на '?' или исключены из результата.
    QString::toLocal8bit() вернет QByteArray в стандартной системной однобайтной кодировке.
                           В русской Windows обычно это кодировка Windows-1251.
                           Предупреждение: если строка содержит символы, которые не доступны в
                           текущей кодировке, результат функции неизвестен. Эти символы могут
                           быть заменены или исключены из результата.
    */
    char *login_ptr = login_ba.data();


    Обратно получить QString из char* можно, зная исходную кодировку.
    char *data = /* получите вашу строку */;
    QString result = QString::fromUtf8(data);
    /*
    QString::fromUtf8() создаст QString в кодировке UTF-8.
    QString::fromLatin1() создаст QString в кодировке Latin-1 (CP819).
    QString::fromLocal8bit() создаст QString в стандартной системной однобайтной кодировке.
                             В русской Windows обычно это кодировка Windows-1251.
    */


    Надеюсь, что мой ответ Вам помог.
    Ответ написан
    Комментировать