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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 5 6 [7]
91  Qt / Пользовательский интерфейс (GUI) / Re: экспоненциальный QDoubleSpinBox : Май 26, 2015, 12:18
Цитировать
У меня проблем "накидать" нет, есть проблемы со временем для таких незапланированных мелочей
Это ни хрена не мелочь для весьма востребованной компоненты. Я поговорил с нашими инженерами на работе и они то же хотели бы использовать такую возможность для ряда случаев.

Цитировать
Мне лично QScienceSpinBox доверия не внушает, слишком много возни с ручным разбором текста.
Надо отметить, что разбор текста и добрая половина QScienceSpinBox скопирована из исходников Qt4.2

Цитировать
Делайте по образцу того что предложил poru вставляя проверенное
Не советую. В предложенном мною варианте, накиданном на скорую руку, не работает валидатор и есть ошибка округления.  Но для...
Цитировать
Пусть даже не идеальный, без наворотов, пока заткнуть, потом можно будет доделать
вполне сойдет.

Ошибку округления я уже знаю как исправить, но заставить работать валидатор так и не получилось.
Есть мнение, что для реализации новых возможностей лучше всего написать по новой DoubleSpinBox наследуясь от QAbstractSpinBox.
92  Qt / Пользовательский интерфейс (GUI) / Re: экспоненциальный QDoubleSpinBox : Май 21, 2015, 11:52
Обнаружил БАГ для очень больших или очень маленьких значений из-за функции округления:

Код
C++ (Qt)
double QDoubleSpinBoxPrivate::round(double value) const
{
   return QString::number(value, 'f', decimals).toDouble();
}
 
93  Qt / Пользовательский интерфейс (GUI) / Re: экспоненциальный QDoubleSpinBox : Май 21, 2015, 09:30
Накидал вот такой вариант...

Код
C++ (Qt)
#include <QDoubleSpinBox>
#include <QDoubleValidator>
 
class ScientificDoubleDpinBox : public QDoubleSpinBox
{
   Q_OBJECT
 
public:
   explicit ScientificDoubleDpinBox(QWidget *parent = 0);
 
   void setMaximum(double max);
   void setMinimum(double min);
   void setDecimals(int prec);
 
   QValidator::State validate(QString &input, int &pos) const;
   double valueFromText(const QString &text) const;
   QString textFromValue(double val) const;
   void fixup(QString &str) const;
 
private:
   QDoubleValidator *m_validator;
};
 

Код
C++ (Qt)
#include <QLineEdit>
#include "scientificdoubledpinbox.h"
 
ScientificDoubleDpinBox::ScientificDoubleDpinBox(QWidget *parent) :
   QDoubleSpinBox(parent)
{
   m_validator = new QDoubleValidator(this);
   m_validator->setNotation(QDoubleValidator::ScientificNotation);
}
 
void ScientificDoubleDpinBox::setMaximum(double max)
{
   m_validator->setTop(max);
   QDoubleSpinBox::setMaximum(max);
}
 
void ScientificDoubleDpinBox::setMinimum(double min)
{
   m_validator->setBottom(min);
   QDoubleSpinBox::setMinimum(min);
}
 
void ScientificDoubleDpinBox::setDecimals(int prec)
{
   m_validator->setDecimals(prec);
   QDoubleSpinBox::setDecimals(prec);
}
 
QValidator::State ScientificDoubleDpinBox::validate(QString &input, int &pos) const
{
   return m_validator->validate(input, pos);
}
 
double ScientificDoubleDpinBox::valueFromText(const QString &text) const
{
   return text.toDouble();
}
 
QString ScientificDoubleDpinBox::textFromValue(double val) const
{
   return QString::number(val, 'e', decimals());
}
 
void ScientificDoubleDpinBox::fixup(QString &str) const
{
   return m_validator->fixup(str);
}
 

Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
   ScientificDoubleDpinBox *sciDoubleSpinBox = new ScientificDoubleDpinBox(this);
   sciDoubleSpinBox->setMaximum(999999999.999999999);
   sciDoubleSpinBox->setMinimum(0.0);
   sciDoubleSpinBox->setDecimals(2);
 
   ui->verticalLayout->addWidget(sciDoubleSpinBox);
}
 

Dpin  Веселый
94  Qt / Пользовательский интерфейс (GUI) / Re: QToolBar stylesheet : Май 13, 2015, 12:34
Для данного случая нужно перечислить несколько состояний, но ключевым является - "border: none":
Код
C++ (Qt)
   ui->mainToolBar->setStyleSheet(
               "QToolBar {"
               "background-color: qlineargradient(spread:pad, x1:1, y1:0.455686, x2:1, y2:1, stop:0 rgba(127, 127, 127, 255), stop:1 rgba(96, 96, 96, 255));"
               "color:rgb(255, 255, 255);"
               "}"
               "QToolButton { "
               "border: none;"
               "padding: 5;"
               "}"
               "QToolButton:hover { "
               "background-color: white;"
               "}"
               "QToolButton:checked:pressed { "
               "background-color: white;"
               "}"
               "QToolButton:pressed { "
               "background-color: red;"
               "}"
               "QToolButton:checked { "
               "background-color: red;"
               "}"
               );
 
95  Qt / Пользовательский интерфейс (GUI) / Re: QInputDialog - дополнительный виджет : Февраль 13, 2015, 14:57
Цитировать
Igors прав, написать данный функционал дело десяти минут...
Bepec, читай еще раз:
Цитировать
Всю эту "херь" я уже реализовал...

Цитировать
Ну а почему кто-то за Вас должен переправлять? Заходите в баг тракер и постите
Да я бы с удовольствием, но у меня нет практики с "инглишом", поэтому и прошу кого-то. А ведь дело-то всего в том, что бы layout был доступен после конструктора.
96  Qt / Пользовательский интерфейс (GUI) / Re: QInputDialog - дополнительный виджет : Февраль 13, 2015, 11:36
Цитировать
Ну а как же прынцыпы? Инкапсуляция, наследование и все такое
Браво! Поддерживаю!

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

И еще:
может ли кто-либо вопрос по дополнительному "виджету" переправить разработчикам?

Описание проблемы:
программа разработана для обычного "виндовоза", но  потребитель у себя установил на стену компьютер с сенсорным экраном, т.е. нет "мыши" и "клавы", при этом программа, разработанная в Qt, не распознает присутствие сенсорного экрана, и потребитель хочет, что бы наиболее частые параметры вводились дополнительным выбором именно через дополнительный "виджет", расположенный между строкой ввода и кнопками "OK" и  "Отмена", и именно в QInputDialog, при этом, когда мы с ним (потребителем) общались "виртуальная клава" ему "на хер" не нужна. Таким образом потребитель хочет что бы при вводе целых чисел была только цифровая панелька, а при вводе вещественных - панелька дополнялась точкой и т.д и т.п.

Всю эту "херь" я уже реализовал, но еще раз повторюсь - отправьте, пожалуйста, запрос "разрабам", что бы дали нормальный доступ к layout'у и строке ввода.
97  Qt / Пользовательский интерфейс (GUI) / Re: QInputDialog - дополнительный виджет : Февраль 12, 2015, 14:24
findChild - ноль возвращает
98  Qt / Пользовательский интерфейс (GUI) / Re: QInputDialog - дополнительный виджет : Февраль 11, 2015, 09:02
Я все же добрался до layout'а ... через одно место  Веселый

Код
C++ (Qt)
   QInputDialog *inputDialog = new QInputDialog(this);
   qDebug() << "a:" << inputDialog->layout();
   QString labelText = inputDialog->labelText();
   qDebug() << "b:" << inputDialog->layout();
   QVBoxLayout *layout = static_cast<QVBoxLayout *>(inputDialog->layout());
   layout->insertWidget(1, new QPushButton("1", this));
   inputDialog->exec();
 
99  Qt / Пользовательский интерфейс (GUI) / Re: QInputDialog - дополнительный виджет : Февраль 10, 2015, 16:22
45kb кода от разработчиков в топку! Нафига layout заносить в приват? Вот я хочу для QSpinBox'а туда кнопочки с цифирями засунуть и мышкой по ним кликать, а то лень до клавы тянуться.
100  Qt / Пользовательский интерфейс (GUI) / QInputDialog - дополнительный виджет : Февраль 10, 2015, 16:13
Можно ли (как) вставить дополнительный виджет в QInputDialog между виджетом ввода (QLineEdit) и кнопками?
101  Qt / Пользовательский интерфейс (GUI) / Re: Как изменить расстояние между виджетами в какой-либо компоновке : Февраль 06, 2015, 14:30
В горизонтальной компоновке 2 кнопки.
Код
CSS
QPushButton[text="Yes"] {
margin: 0 15 0 0;
padding: 5 0;
}
 
QPushButton[text="No"] {
margin: 0 0 0 15;
padding: 5 0;
}
 

Визуально расстояние между кнопками увеличилось. А хотелось бы и уменьшать. Если margin большой, то свободное пространство продолжает принимать клик от мышки. Выглядит как-то нелепо. Как исправить?
102  Qt / Пользовательский интерфейс (GUI) / Как изменить расстояние между виджетами в какой-либо компоновке : Февраль 06, 2015, 12:45
Как используя Qt Style Sheets изменить расстояние между "виджетами", которые скомпонованы в QHBoxLayout или QVBoxLayout?
103  Qt / Общие вопросы / Re: ссылки\указатели : Ноябрь 24, 2014, 11:13
Разработчики рекомендуют экземпляры классов, наследованные от QObject передавать по указателю. Иначе, в ряде случаев, ваше приложение потерпит крах.
Таким образом остальные объекты, которые не наследованы от QObject, лучше всего передавать по классической схеме в виде ссылок, для обеспечения лучшей оптимизации кода компилятором.
Страниц: 1 ... 5 6 [7]

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