Russian Qt Forum
Май 14, 2024, 19:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 22 23 [24] 25
346  Qt / Model-View (MV) / Re: Не могу начать drag в QTableView : Март 17, 2015, 16:20
Если я правильно понимаю, то нет.

Цитировать
The QMimeData and QDrag objects created by the source widget should not be deleted - they will be destroyed by Qt

ЗЫ. Специально сейчас попробовал. У QMimeData *mimeData = new QMimeData; деструктор отрабатывает, как только отпускаешь клавишу мыши.
347  Qt / Model-View (MV) / Re: Не могу начать drag в QTableView : Март 17, 2015, 15:40
Не стал выискивать ошибку. Вот пример который работает:

class sResultModelView : public QTableView, QPoint start_pos.

Код:
void sResultModelView::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton)
        start_pos = event->pos();

    QTableView::mousePressEvent(event);
}
Код:
void sResultModelView::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton) {

        int distance = (event->pos() - start_pos).manhattanLength();

        if (distance >= QApplication::startDragDistance())
            startDrag(Qt::CopyAction | Qt::MoveAction);
    }

    QTableView::mouseMoveEvent(event);
}
Код:
void sResultModelView::startDrag(Qt::DropActions supportedActions)
{
    if (selectionModel()->currentIndex().isValid()) {

        QMimeData *mimeData = new QMimeData;
        QByteArray myArray;
        QDataStream c_stream(&myArray, QIODevice::WriteOnly);
        QString name = "Id row";

        c_stream << name;

        mimeData->setData("application/search_quick_mime", myArray);

        QDrag *drag = new QDrag(this);
        drag->setMimeData(mimeData);

        drag->exec(supportedActions, Qt::CopyAction);
    }
}
348  Qt / Базы данных / Re: PostgreSQL: сообщения об ошибках : Март 16, 2015, 18:05
получить ответ от БД о невозможности удаления.

Насколько я понял, вас не устраивает текст ответа, так смысл тогда от БД получать ответ?
349  Qt / Пользовательский интерфейс (GUI) / Re: QFileDialog текст для Cancel : Март 14, 2015, 14:35
Как вариант не использовать нативный диалог, а пользоваться родным Qt-шным.

Код:
dlg.setOption(QFileDialog::DontUseNativeDialog, true);
350  Qt / Базы данных / Re: PostgreSQL: сообщения об ошибках : Март 13, 2015, 10:55
С другой стороны - вот пользователь только открыл справочник/таблицу "на посмотреть", он и не собирался ничего делать, а программа уже выполняет множество запросов-проверок "а можно ли удалить", "а можно ли изменить", "а что еще можно". В результате из-за проверок увеличивается время на загрузку данных и негодование пользователя.

И второй момент: если запись удалить хочется, а кнопка заблокирована - то как пользователю понять, почему именно она заблокирована? Мало ли, может, он таблицы чистит от устаревших данных, а тут удалять не дают и почему - не говорят...

Делай проверки не при открытии, а при выполнении пользователем определенных действий: попытке удаления, попытке изменения.
351  Qt / Model-View (MV) / Re: QTreeView + QFileSystemModel - скрыть расширения файлов : Март 12, 2015, 09:14
Возможно пригодится таким же новичкам с малой практикой как я.

Может быть лучше использовать здесь switch, что и быстрее и нагляднее.

Код:
    switch (role) {
         case Qt::EditRole:
             return fileInfo(index).baseName();
             break;
         case Qt::DisplayRole: {
             if (fileInfo(index).isFile())
                return m_needFilenameWithExt ? fileInfo(index).fileName() :fileInfo(index).baseName();
             else
                 return QFileSystemModel::data(index, role);
             break;
         }
         default:
             return QFileSystemModel::data(index, role);
             break;
     }
352  Qt / Пользовательский интерфейс (GUI) / Re: Одинаково покрасить кнопку в Qt4 и Qt5 : Февраль 11, 2015, 18:19
Цитировать
QMotifStyle, QPlastiqueStyle, QCleanlooksStyle, and QCDEStyle are replaced with a new fusion style. If your application depends on any of these removed styles, you can either use the qtstyleplugins project to get these styles or update your application to use the new fusion style. For more details about this change, see https://blog.qt.digia.com/blog/2012/10/30/cleaning-up-styles-in-qt5-and-adding-fusion/.
353  Qt / Пользовательский интерфейс (GUI) / Re: Компоновка виджетов внутри центрального виджета : Январь 23, 2015, 13:45
Скорее всего не нужно в layout->addWidget использовать выравнивание, или использовать его по другому.
Попробовал повторить код, но не нашел определения layout, использовал QVBoxLayout
Код:
QWidget *centralView = new QWidget;
    centralView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    QPalette Pal;
    Pal.setColor(QPalette::Background, Qt::black);
    QPalette PalYellow;
    PalYellow.setColor(QPalette::Background, Qt::yellow);
    QPalette PalGreen;
    PalGreen.setColor(QPalette::Background, Qt::green);
    centralView->setAutoFillBackground(true);
    centralView->setPalette(Pal);

    QWidget * data = new QWidget;
    data->setPalette(PalYellow);
    data->setAutoFillBackground(true);

    data->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    QPushButton * but = new QPushButton("Тест Кнопка");
    QVBoxLayout* phbxLayout = new QVBoxLayout;
    phbxLayout->addWidget(but);
    data->setLayout(phbxLayout);

    QVBoxLayout *layout = new QVBoxLayout;

    layout->addWidget(centralView);
    layout->addWidget(data);
    QWidget* empty = new QWidget;

    empty->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    empty->setLayout(layout);
    empty->setPalette(PalGreen);
    empty->setAutoFillBackground(true);
    setCentralWidget(empty);

Попробуй так
354  Qt / Вопросы новичков / Re: Вывод числа со знаком (Qstring) : Январь 13, 2015, 22:52
Сделал так: tr().springf("%+d");

Если имеется ввиду QString::​sprintf, то лучше ее не использовать

Цитировать
Warning: We do not recommend using QString::sprintf() in new Qt code.
Instead, consider using QTextStream or arg(), both of which support Unicode strings seamlessly and are type-safe
355  Qt / Вопросы новичков / Re: Вывод числа со знаком (Qstring) : Январь 13, 2015, 18:20
Это должно быть по определению.

Что должно быть? Вывод положительного числа со знаком "+" в виде QString? Наверное этого не нужно было разработчикам Qt.
Мне так тоже за 20 лет работы с учетными программами ни разу не понадобилось.
Сделай простейшую функцию
Код:
QString qrealToString(qreal i) {return QString::number(i).prepend(i > 0 ? "+" : "");}
и пользуй ее где захочешь.
356  Qt / Вопросы новичков / Re: Вывод числа со знаком (Qstring) : Январь 13, 2015, 14:48
Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  Улыбающийся

Чаще всего виновата не ущербность языка, а ущербность мышления.
Что тебе мешает написать свой класс, который будет делать все что тебе надо.
357  Qt / Пользовательский интерфейс (GUI) / Re: Превью файлов на выборе : Январь 05, 2015, 12:11
Т.е. твои файлы нельзя просмотреть стандартными средствами?
358  Qt / Пользовательский интерфейс (GUI) / Re: Превью файлов на выборе : Январь 05, 2015, 11:20
А вот что на Вындоуз? Это ввергает меня в пучину COM'а, нырянию в помойную яму реестра и.т.п? Или все не так уж страшно? Или свершится чудо и есть кросс-платформенное решение? (ну а вдруг!!).

На винде 7 QFileDialog открывает виндовый выбор файлов. И превью там нормально работает, если конечно установлены программы просмотра, excel, word, кодеки для видео и т.п.
359  Qt / Работа с сетью / Re: QTcpSocket как отследить потерю пакета ? : Январь 05, 2015, 09:35
Вообще странно, что QTcpSocket теряет пакеты.
У меня уже 3 года работает обмен между 10-ю базами данных на QTcpSocket.
Каждые 5 минут между ними происходит передача данных от 1 байта до 300 килобайт. Ни разу не видел чтобы пакет потерялся.

Может все-таки неправильно прием данных организован?
360  Qt / Вопросы новичков / Re: логика создания модели и делегата : Январь 05, 2015, 09:01
есть набор данных из БД. мне надо их отображать в виджете. грубый пример - стена вконакте: есть label отправителя, image, text, label date, comment. данные же берутся из БД в модель, создается делегат, в который добавляются данные из модели. правильно? так вот как создать делегат такой с лейблами и кнопками? точнее, я пытаюсь создать виджет для каждого итема модели, а в виджете создать мнопки и лейблы. вопрос в том, в каких наследованных методах от QStyledItemDelegate мне надо создавать виджет и все его наполнение?

Есть набор данных, которыми заполняется модель. Модель установлена в представление (например QTableView). А у представления, на определенные колонки установлены делегаты.
Этот делегат позволяет определенным образом видеть и редактировать данные в этой колонке.

создается делегат, в который добавляются данные из модели. правильно?

Опиши свою задачу более подробно. Просто создается впечатление, что мы о разных понятиях говорим. Какая у тебя модель?
Куда она установлена (какое представление используется для показа данных)? Как ты устанавливаешь делегат в представление?
Страниц: 1 ... 22 23 [24] 25

Страница сгенерирована за 0.055 секунд. Запросов: 23.