Просмотр сообщений
|
Страниц: 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); } }
|
|
|
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; }
|
|
|
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
|
Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы. Чаще всего виновата не ущербность языка, а ущербность мышления. Что тебе мешает написать свой класс, который будет делать все что тебе надо.
|
|
|
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). А у представления, на определенные колонки установлены делегаты. Этот делегат позволяет определенным образом видеть и редактировать данные в этой колонке. создается делегат, в который добавляются данные из модели. правильно?
Опиши свою задачу более подробно. Просто создается впечатление, что мы о разных понятиях говорим. Какая у тебя модель? Куда она установлена (какое представление используется для показа данных)? Как ты устанавливаешь делегат в представление?
|
|
|
|
|