Skip to content

Commit c35abef

Browse files
Scrolling implemented more correctly
1 parent 3583687 commit c35abef

File tree

7 files changed

+25
-95
lines changed

7 files changed

+25
-95
lines changed

trikGui/motorLever.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ MotorLever::MotorLever(const QString &port, trikControl::MotorInterface &motor,
3737
, mPowerStep(10)
3838
, mPower(0)
3939
, mNameLabel(port)
40-
, mPowerLabel("0")
4140
, mOnOffLabel(tr("off"))
4241
{
4342
mMotor.powerOff();
@@ -46,23 +45,19 @@ MotorLever::MotorLever(const QString &port, trikControl::MotorInterface &motor,
4645
mPowerBar.setMinimum(mMinPower);
4746
mPowerBar.setMaximum(mMaxPower);
4847
mPowerBar.setValue(0);
49-
mPowerBar.setTextVisible(false);
48+
mPowerBar.setTextVisible(true);
49+
mPowerBar.setFormat("%v");
5050

5151
mNameLabel.setAlignment(Qt::AlignCenter);
5252
mPowerBar.setAlignment(Qt::AlignCenter);
53-
mPowerLabel.setAlignment(Qt::AlignCenter);
5453
mOnOffLabel.setAlignment(Qt::AlignCenter);
5554

56-
// mPowerLabel and mOnOffLabel can change their widths during work. It will cause mPowerBar
57-
// width change. To prevent it, we set fixed widths for mPowerLabel and mOnOffLabel.
58-
// They are equal to maximum widths of the widgets. For mPowerLabel it is when the label text
59-
// is "-100", for mOnOffLabel - "off".
60-
mPowerLabel.setFixedWidth(40);
55+
// mOnOffLabel can change its width during work. It will cause mPowerBar
56+
// width change. To prevent it, we set fixed width it.
6157
mOnOffLabel.setFixedWidth(48);
6258

6359
mLayout.addWidget(&mNameLabel);
6460
mLayout.addWidget(&mPowerBar);
65-
mLayout.addWidget(&mPowerLabel);
6661
mLayout.addWidget(&mOnOffLabel);
6762
setLayout(&mLayout);
6863

@@ -117,7 +112,6 @@ void MotorLever::setPower(int power)
117112

118113
mPower = power;
119114
mPowerBar.setValue(power);
120-
mPowerLabel.setText(QString::number(power));
121115
if (mIsOn) {
122116
mMotor.setPower(power);
123117
}

trikGui/motorLever.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class MotorLever : public QWidget
7272
QHBoxLayout mLayout;
7373
QLabel mNameLabel;
7474
QProgressBar mPowerBar;
75-
QLabel mPowerLabel;
7675
QLabel mOnOffLabel;
7776
};
7877

trikGui/motorsWidget.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,17 @@
1414

1515
#include "motorsWidget.h"
1616

17+
#include <QtCore/QTimer>
1718
#include <QtGui/QKeyEvent>
1819

1920
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
2021
#include <QtGui/QVBoxLayout>
22+
#include <QtGui/QScrollArea>
2123
#else
2224
#include <QtWidgets/QVBoxLayout>
25+
#include <QtWidgets/QScrollArea>
2326
#endif
2427

25-
#include "verticalScrollArea.h"
2628
#include "motorLever.h"
2729

2830
using namespace trikGui;
@@ -35,8 +37,11 @@ MotorsWidget::MotorsWidget(trikControl::BrickInterface &brick
3537
, mPorts(mBrick.motorPorts(type))
3638
, mLevers(mPorts.size())
3739
{
38-
const auto scrollArea = new VerticalScrollArea(this);
40+
const auto scrollArea = new QScrollArea(this);
3941
scrollArea->setFrameStyle(QFrame::NoFrame);
42+
scrollArea->setWidgetResizable(true);
43+
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
44+
scrollArea->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
4045

4146
const auto leversWidget = new QWidget(this);
4247
const auto innerLayout = new QVBoxLayout(this);
@@ -55,8 +60,11 @@ MotorsWidget::MotorsWidget(trikControl::BrickInterface &brick
5560
leversWidget->setLayout(innerLayout);
5661

5762
outerLayout->addWidget(scrollArea);
63+
delete this->layout();
5864
this->setLayout(outerLayout);
5965
scrollArea->setWidget(leversWidget);
66+
67+
QTimer::singleShot(0, this, SLOT(fixLeversPosition()));
6068
}
6169

6270
MotorsWidget::~MotorsWidget()
@@ -102,3 +110,9 @@ void MotorsWidget::keyPressEvent(QKeyEvent *event)
102110
}
103111
}
104112
}
113+
114+
void MotorsWidget::fixLeversPosition()
115+
{
116+
focusNextChild();
117+
focusPreviousChild();
118+
}

trikGui/motorsWidget.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ class MotorsWidget : public TrikGuiDialog
6363
protected:
6464
void keyPressEvent(QKeyEvent *event) override;
6565

66+
private slots:
67+
/// Hack to work around odd QScrollArea behavior which incorrectly positions inner widget when there is no need for
68+
/// vertical scrollbar.
69+
void fixLeversPosition();
70+
6671
private:
6772
trikControl::BrickInterface &mBrick;
6873
QStringList mPorts;

trikGui/trikGui.pro

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ HEADERS += \
4444
$$PWD/trikGuiDialog.h \
4545
$$PWD/trikGuiMessageBox.h \
4646
$$PWD/updateWidget.h \
47-
$$PWD/verticalScrollArea.h \
4847
$$PWD/wiFiAPWidget.h \
4948
$$PWD/wiFiClientWidget.h \
5049
$$PWD/wiFiInitWidget.h \
@@ -77,7 +76,6 @@ SOURCES += \
7776
$$PWD/trikGuiDialog.cpp \
7877
$$PWD/trikGuiMessageBox.cpp \
7978
$$PWD/updateWidget.cpp \
80-
$$PWD/verticalScrollArea.cpp \
8179
$$PWD/wiFiAPWidget.cpp \
8280
$$PWD/wiFiClientWidget.cpp \
8381
$$PWD/wiFiInitWidget.cpp \

trikGui/verticalScrollArea.cpp

Lines changed: 0 additions & 43 deletions
This file was deleted.

trikGui/verticalScrollArea.h

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)