Skip to content

Commit 00b3655

Browse files
author
魏鹏
committed
1.finished designing the ui of highlighter tool
2.fix the bug:double free widget 3.fix the bug:double set layout ps: 我真的想吐槽一句,QLayout的构造函数是QLayout(QWidget *parent), 我一直以为QLayout的parent作用是和QWidget一样的,是为了自动回收 内存,没想到是自动调用QWidget::setLayout方法,直接导致我后面设 置layout报错,说我重复设置layout,醉了,害得我查了好久ˋ_ˊ* !!!
1 parent caaeaca commit 00b3655

File tree

6 files changed

+95
-14
lines changed

6 files changed

+95
-14
lines changed

finder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Finder::Finder(QWidget *parent):
44
QDockWidget("finder", parent),
55
mRootWidget(new QWidget(this)),
6-
mMainLayout(new QHBoxLayout(mRootWidget)),
6+
mMainLayout(new QHBoxLayout()),
77
mRegModeBox(new QCheckBox("regular mode", mRootWidget)),
88
mCaseSenseBox(new QCheckBox("case sensitively", mRootWidget)),
99
mWholeWordBox(new QCheckBox("whole word", mRootWidget)),

highlighter.cpp

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,49 @@
11
#include "highlighter.h"
22

33
Highlighter::Highlighter(QWidget *parent):
4-
QDockWidget(parent)
4+
QDockWidget(parent),
5+
mRootWidget(new QWidget(parent)),
6+
mMainLayout(new QVBoxLayout()),
7+
mToolLayout(new QHBoxLayout()),
8+
mControlLayout(new QHBoxLayout()),
9+
mRegulationBox(new QComboBox(mRootWidget)),
10+
mNewButton(new QToolButton(mRootWidget)),
11+
mDelButton(new QToolButton(mRootWidget)),
12+
mSaveButton(new QToolButton(mRootWidget)),
13+
mTextEdit(new QPlainTextEdit(mRootWidget)),
14+
mHighlightButton(new QToolButton(mRootWidget)),
15+
mFindPreButton(new QPushButton(mRootWidget)),
16+
mFindNxtButton(new QPushButton(mRootWidget))
517
{
18+
setupUi();
19+
}
20+
21+
void Highlighter::setupUi()
22+
{
23+
// widget setting
24+
mRegulationBox->setEditable(true);
25+
mNewButton->setText("+");
26+
mDelButton->setText("-");
27+
mSaveButton->setText("<<");
28+
mHighlightButton->setText("H");
29+
mFindPreButton->setText("find pre");
30+
mFindNxtButton->setText("find next");
31+
32+
// layout setting
33+
mToolLayout->addWidget(mRegulationBox);
34+
mToolLayout->addWidget(mNewButton);
35+
mToolLayout->addWidget(mDelButton);
36+
mToolLayout->addWidget(mSaveButton);
37+
38+
mControlLayout->addWidget(mHighlightButton);
39+
mControlLayout->addWidget(mFindPreButton);
40+
mControlLayout->addWidget(mFindNxtButton);
41+
42+
mMainLayout->addItem(mToolLayout);
43+
mMainLayout->addWidget(mTextEdit);
44+
mMainLayout->addItem(mControlLayout);
645

46+
// parent setting
47+
mRootWidget->setLayout(mMainLayout);
48+
setWidget(mRootWidget);
749
}

highlighter.h

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
#include <QSharedPointer>
66
#include <QSyntaxHighlighter>
77
#include <QDockWidget>
8+
#include <QPushButton>
9+
#include <QToolButton>
10+
#include <QPlainTextEdit>
11+
#include <QComboBox>
12+
#include <QHBoxLayout>
13+
#include <QLayout>
14+
#include <QVBoxLayout>
815

916

1017
class Highlighter : public QDockWidget
@@ -19,7 +26,23 @@ class Highlighter : public QDockWidget
1926
signals:
2027
void logHighlighterChanged();
2128

22-
public slots:
29+
private:
30+
void setupUi();
31+
32+
private:
33+
QWidget *mRootWidget;
34+
QLayout *mMainLayout;
35+
QLayout *mToolLayout;
36+
QLayout *mControlLayout;
37+
38+
QComboBox *mRegulationBox;
39+
QToolButton *mNewButton;
40+
QToolButton *mDelButton;
41+
QToolButton *mSaveButton;
42+
QPlainTextEdit *mTextEdit;
43+
QToolButton *mHighlightButton;
44+
QPushButton *mFindPreButton;
45+
QPushButton *mFindNxtButton;
2346
};
2447

2548
#endif // HIGHLIGHTER_H

logviewer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
LogViewer::LogViewer(QWidget *parent):
44
QWidget(parent),
5-
mRootLayout(new QGridLayout(this)),
5+
mRootLayout(new QGridLayout()),
66
mMainTabWidget(new QTabWidget(this)),
77
mViewportList(new QVector<Viewport *>()),
88
mCurrentIndex(0)

mainwindow.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,29 @@
22

33
MainWindow::MainWindow(QWidget *parent) :
44
QMainWindow(parent),
5-
mLogViewer(new LogViewer(parent)),
6-
mFinder(new Finder(parent))
5+
mLogViewer(new LogViewer(this)),
6+
mFinder(new Finder(this)),
7+
mHighlighter(new Highlighter(this))
78
{
8-
setWindowTitle("VisualLog");
9-
mLogViewer->addViewport();
10-
setCentralWidget(mLogViewer);
11-
addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, mFinder);
12-
13-
connect(mFinder, &Finder::findTriggered, mLogViewer, &LogViewer::find);
9+
setupUi();
1410
}
1511

1612
MainWindow::~MainWindow()
1713
{
1814

1915
}
16+
17+
void MainWindow::setupUi()
18+
{
19+
// MainWindow settings
20+
setWindowTitle("VisualLog");
21+
setCentralWidget(mLogViewer);
22+
addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, mFinder);
23+
addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, mHighlighter);
24+
25+
// children settings
26+
mLogViewer->addViewport();
27+
28+
// others
29+
connect(mFinder, &Finder::findTriggered, mLogViewer, &LogViewer::find);
30+
}

mainwindow.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "logviewer.h"
1111
#include "finder.h"
12+
#include "highlighter.h"
1213

1314

1415
namespace Ui {
@@ -24,8 +25,12 @@ class MainWindow : public QMainWindow
2425
~MainWindow();
2526

2627
private:
27-
LogViewer *mLogViewer;
28-
Finder *mFinder;
28+
void setupUi();
29+
30+
private:
31+
LogViewer *mLogViewer;
32+
Finder *mFinder;
33+
Highlighter *mHighlighter;
2934
};
3035

3136
#endif // MAINWINDOW_H

0 commit comments

Comments
 (0)