leocad/qt/lc_qutils.cpp

105 lines
2.7 KiB
C++
Raw Normal View History

2013-08-09 06:57:18 +02:00
#include "lc_global.h"
#include "lc_qutils.h"
#include "lc_application.h"
#include "lc_library.h"
#include "pieceinf.h"
QString lcFormatValue(float Value, int Precision)
{
QString String = QString::number(Value, 'f', Precision);
2021-11-15 03:34:24 +01:00
const int Dot = String.indexOf('.');
if (Dot != -1)
{
while (String.endsWith('0'))
String.chop(1);
if (String.endsWith('.'))
String.chop(1);
}
return String;
}
QString lcFormatValueLocalized(float Value)
{
QLocale Locale = QLocale::system();
Locale.setNumberOptions(QLocale::OmitGroupSeparator);
2021-07-06 02:00:41 +02:00
QString DecimalPoint = Locale.decimalPoint();
QString String = Locale.toString(Value, 'f', 4);
if (String.indexOf(DecimalPoint) != -1)
{
while (String.endsWith('0'))
String.chop(1);
if (String.endsWith(DecimalPoint))
String.chop(1);
}
return String;
}
float lcParseValueLocalized(const QString& Value)
{
return QLocale::system().toFloat(Value);
}
2013-08-09 06:57:18 +02:00
// Resize all columns to content except for one stretching column. (taken from QT creator)
lcQTreeWidgetColumnStretcher::lcQTreeWidgetColumnStretcher(QTreeWidget *treeWidget, int columnToStretch)
: QObject(treeWidget->header()), m_columnToStretch(columnToStretch), m_interactiveResize(false), m_stretchWidth(0)
2013-08-09 06:57:18 +02:00
{
parent()->installEventFilter(this);
connect(treeWidget->header(), SIGNAL(sectionResized(int, int, int)), SLOT(sectionResized(int, int, int)));
2013-08-09 06:57:18 +02:00
QHideEvent fake;
lcQTreeWidgetColumnStretcher::eventFilter(parent(), &fake);
}
void lcQTreeWidgetColumnStretcher::sectionResized(int LogicalIndex, int OldSize, int NewSize)
{
Q_UNUSED(OldSize)
if (LogicalIndex == m_columnToStretch)
{
QHeaderView* HeaderView = qobject_cast<QHeaderView*>(parent());
if (HeaderView->isVisible())
m_interactiveResize = true;
m_stretchWidth = NewSize;
}
}
2021-11-15 03:34:24 +01:00
bool lcQTreeWidgetColumnStretcher::eventFilter(QObject* Object, QEvent* Event)
2013-08-09 06:57:18 +02:00
{
2021-11-15 03:34:24 +01:00
if (Object == parent())
2013-08-09 06:57:18 +02:00
{
QHeaderView* HeaderView = qobject_cast<QHeaderView*>(Object);
2021-11-15 03:34:24 +01:00
if (Event->type() == QEvent::Show)
2013-08-09 06:57:18 +02:00
{
2021-01-08 19:35:52 +01:00
for (int i = 0; i < HeaderView->count(); ++i)
HeaderView->setSectionResizeMode(i, QHeaderView::Interactive);
m_stretchWidth = HeaderView->sectionSize(m_columnToStretch);
2013-08-09 06:57:18 +02:00
}
2021-11-15 03:34:24 +01:00
else if (Event->type() == QEvent::Hide)
2013-08-09 06:57:18 +02:00
{
if (!m_interactiveResize)
for (int i = 0; i < HeaderView->count(); ++i)
HeaderView->setSectionResizeMode(i, i == m_columnToStretch ? QHeaderView::Stretch : QHeaderView::ResizeToContents);
2013-08-09 06:57:18 +02:00
}
2021-11-15 03:34:24 +01:00
else if (Event->type() == QEvent::Resize)
2013-08-09 06:57:18 +02:00
{
if (HeaderView->sectionResizeMode(m_columnToStretch) == QHeaderView::Interactive) {
const int StretchWidth = HeaderView->isVisible() ? m_stretchWidth : 32;
2021-01-08 19:35:52 +01:00
HeaderView->resizeSection(m_columnToStretch, StretchWidth);
2013-08-09 06:57:18 +02:00
}
}
}
return false;
}