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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 30 31 [32]
466  Qt / Вопросы новичков / Re: Дополнения к приложению. Плагины : Февраль 16, 2012, 18:20
поспорили, поспорили в стороннем, а мыслей не у кого не появилось. А жаль. Столкнулся, хотелось бы знать
Тыц. Видео урок, правда на английском, но все разжевано. Кстати, довольно не плохая серия уроков у дядьки вышла Улыбающийся
467  Qt / Пользовательский интерфейс (GUI) / Re: Трансформация QTabWidget <-> QWdiget/QDialog : Февраль 14, 2012, 08:24
На сколько я понял, нужен функционал DockWindows, если так, то чем стандартный не устраивает? Dock Widgets Example
468  Qt / Пользовательский интерфейс (GUI) / Re: Какие виджети нужно использовать : Февраль 09, 2012, 00:41
Хотел б создать виджет с функциональностю как в Qt Creator -> Projects -> Build Step, Clean Step,...
Тойсть нужно сначали видеть короткую информацию, а при нажатие на кнопку Details откроеться более подробное описания с полями и кнопками для ее изменения. С каких компонент должен складаться такой виджет?
Из любых... Просто управляешь видимостью нужного тебе виджета с помощью QWidget::setVisible(bool visible);
Примерно так:

main.cpp:
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   MainWindow *m = new MainWindow;
   m->show();
 
   return a.exec();
}
 

mainwindow.h:
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
class QFrame;
 
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
public:
   explicit MainWindow(QWidget *parent = 0);
 
signals:
 
public slots:
   void onPushButtonPushed();
 
private:
   QFrame *frame2;
};
 
#endif // MAINWINDOW_H
 

mainwindow.cpp:
Код
C++ (Qt)
#include "mainwindow.h"
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QFrame>
#include <QComboBox>
#include <QVBoxLayout>
#include <QDialog>
#include <QGroupBox>
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent)
{
   QVBoxLayout *layout = new QVBoxLayout;
   QWidget *centralWidget = new QWidget;
   QFrame *frame = new QFrame();
   QHBoxLayout *layout2 = new QHBoxLayout();
   QPushButton *button = new QPushButton;
   QVBoxLayout *layout3 = new QVBoxLayout;
   centralWidget->setLayout(layout);
   setCentralWidget(centralWidget);
   frame->setLayout(layout2);
   button->setText(QObject::tr("Push me!"));
   layout2->addWidget(new QLabel(QObject::tr("short info: bla-bla-bla...")));
   layout2->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding));
   layout2->addWidget(button);
   frame2 = new QFrame;
   frame2->setLayout(layout3);
   layout3->addWidget(new QLabel(QObject::tr("any widgets")));
   layout3->addWidget(new QLineEdit);
   layout3->addWidget(new QLineEdit);
   layout->addWidget(frame);
   layout->addWidget(frame2);
   layout->addWidget(new QLabel(QObject::tr("always visible")));
   layout->addSpacerItem(new QSpacerItem(0,0, QSizePolicy::Minimum, QSizePolicy::Expanding));
   connect(button, SIGNAL(clicked()), this, SLOT(onPushButtonPushed()));
 
 
}
 
void MainWindow::onPushButtonPushed()
{
   frame2->setVisible(!frame2->isVisible());
}
 
 
469  Qt / Пользовательский интерфейс (GUI) / Re: Вычислить оптимальный размер диалога для определенного лайаута. : Февраль 05, 2012, 12:02
минимальный оптимальный размер это QWidget::minimumSizeHint(), только вот будет ли работать до показа виджета. Попробуй вызвать перед этим QWidget::adjustSize() или QLayout::activate()
Спасибо! Блин, даже стыдно, что называется "читайте доки, они рулят!". Все работает и до вызовов QWidget::adjustSize() или QLayout::activate().
470  Qt / Пользовательский интерфейс (GUI) / Вычислить оптимальный размер диалога для определенного лайаута. : Февраль 04, 2012, 10:10
Здравствуйте! В продолжение темы eventFilter за пределами окна с флагом Qt::Popup: есть лайаут, укомплектованный другими лейаутами с виджетами, нужно узнать минимальный размер виджета для этого лейаута до вывода его на экран. Пробовал копать в сторону void QWidget::updateGeometry ():
Код
C++ (Qt)
   QVBoxLayout *lay = new QVBoxLayout;
   QWidget *w = new QWidget(this, Qt::Window);
   lay->addWidget(new QPushButton("button"));
   w->resize(0,0);
   w->setLayout(lay);
   w->updateGeometry();
   qDebug() << w->size();
но, естественно, размер у виджета не поменялся Грустный Нужно это для определения геометрии виджета, помеченом на картинке.

Пока тупо в выставляю предварительно в ручную подсчитанный размер, что не есть гуд, так как количество рядов кнопок по вертикали может увеличиваться.
471  Qt / Пользовательский интерфейс (GUI) / Re: eventFilter за пределами окна с флагом Qt::Popup. : Февраль 01, 2012, 16:24
А помоему вы фигней страдаете Подмигивающий
Вполне возможно Улыбающийся
Насколько я понимаю, ваш рисунок с Creator'a это обычный modelView, а вовсе не "виджеты нарисованные поверх виджетов".
правое окно, где комбобоксы - как раз окно, созданное с флагом Qt::Popup, выводиться поверх QListView, и при этом кнопочки "run", "debug" и "build" получают события от мыши.
- на этой картинке вроде чуть более понятно Улыбающийся
PS ответ на вопрос темы(пусть и какой то странноватый): Просто выводи ещё 1 виджет,  и давай ему родителя того, на ком рисовать будешь.
Примерно так и планирую сделать, если вопрос с Qt::Popup не решиться Улыбающийся
472  Qt / Пользовательский интерфейс (GUI) / eventFilter за пределами окна с флагом Qt::Popup. : Февраль 01, 2012, 06:35
Здравствуйте! Такой вопрос: есть некая форма, с произвольными виджетами, скомпонованными с помощью лейаутов, внизу этой формы блок кнопок:



Задача: вверху этих кнопок поверх существующих виджетов, без изменения их геометрии, нарисовать еще один блок кнопок. На вскидку задача решается с помощью вывода еще одного окна в нужную нам область экрана, с установленным флагом Qt::Popup, но одна беда: при выводе этого попапа все остальные виджеты, включая нижний ряд кнопок, что критично, перестают получать события от мыши, такие как QEvent::HoverEnter и QEvent::HoverLeave, до того момента, пока попап не закрыт. В какую сторону копать, что бы разрешить нижним кнопкам реагировать на мышиные события до закрытия окна с попапом? Ведь в QtCreator'е как то это реализовано, при выводе попапа нужные ему кнопки подсвечиваются?

Пытался там подсмотреть, но из тех мегабайтов кода нужный кусок не удалось вычленить Грустный
473  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 20:17
Цитировать
А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
я бы курил в сторону определения своего eventFilter:
bool eventFilter(QObject *obj, QEvent *event);

Оно, спасибо.
474  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 19:08
Цитировать
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
Ааа... Ну раз сейчас такие костыли в порядке вещей.. Тогда наверно нужно зарегистрировать ваш тип MySpinBox*. Почитайте про
Q_DECLARE_METATYPE,
QMetaType
На счет костылей - ну как умеем, раньше только на асме z80 программил, там любые костыли в порядке вещей. А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
475  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 18:40
Цитировать
Это понятно, спасибо, исправим. Хотя в доках написано, что
...
так что в теории должно быть без разницы.
Я вообщето это к тому, что аргументы у valueChanged(int) и у onValueChanged(int) должны быть int, а не MySpinBox*
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
476  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 18:15
Это не правильно. Так не надо устанавливать.
надо как то так:
Код
C++ (Qt)
connect(dsb, SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
 
Это понятно, спасибо, исправим. Хотя в доках написано, что
Цитировать
Код
C++ (Qt)
bool QObject::connect ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) const
This function overloads connect().
Connects signal from the sender object to this object's method.
Equivalent to
Код
C++ (Qt)
connect(sender, signal, this, method, type)
.
так что в теории должно быть без разницы.
Цитировать

QSpinDoubleBox - это в смысле QDoubleSpinBox.. или уже что то новое придумали?
Да, мой косяк, читать QSpinDoubleBox как QDoubleSpinBox Улыбающийся
477  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidget и QSpinDoubleBox : Март 05, 2011, 17:50
Устанавливаю так:
Код:
MySpinBox *dsb = new MySpinBox(MySpinBox::SpinBoxForTime); //MySpinBox наследован от QSpinDoubleBox
    connect(dsb,SIGNAL(valueChanged(MySpinBox*)),SLOT(onValueChanged(MySpinBox*))); //присоединение сигнала к слоту
    ui->tableWidget->setCellWidget(0,0,dsb);
в идеале хотелось  бы получить такой-же сигнальчик, как во второй строке кода, только по получению спинбоксом фокуса ввода.
478  Qt / Пользовательский интерфейс (GUI) / QTableWidget и QSpinDoubleBox : Март 05, 2011, 01:15
Здравствуйте! Подскажите куда копать: есть QTableWidget, ячейки которого заполнены QSpinDoubleBox, хотелось бы заполучить возможность посылки сигнала при клике на этот самый QSpinDoubleBox, пробовал через наследование и переопределение слота setFocus() - не вышло. Направте на путь истинный, пожалуйста  Улыбающийся
Страниц: 1 ... 30 31 [32]

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