QPlainTextEdit - setViewportMargins,受保护
QPlainTextEdit - setViewportMargins, protected
我有一个简单的文本编辑应用程序 - QPlainTextEdit,由 qt designer 创建。我只需要从 mainwindow.cpp setViewportMargins.But 收到以下错误消息 - void QAbstractScrollArea::setViewportMargins(int, int, int, int)' is protected.
代码:
ui->textEdit->setViewportMargins(10,10,10,10);
有什么办法吗?
为了使用 QPlainTextEdit
的受保护方法,您需要对其进行子类化,如下所示:
class MyPlainTextEdit: public QPlainTextEdit
{
Q_OBJECT
public:
MyPlainTextEdit(QWidget* parent=0):QPlainTextEdit(parent){}
//ADD A PUBLIC METHOD
void publicSetViewportMargins(int left, int top, int right, int bottom)
{
setViewportMargins(left ,top, right, bottom);
}
//OR
protected:
void setViewportMargins(int left, int top, int right, int bottom)
{
//REIMPLEMENT METHOD HERE
}
};
受保护的函数只能在class内使用,所以会产生错误。我已经通过设计 CustomPlainText
class 并将其提升为原始 QPlainTextEdit
来解决它,其中我使用了 setViewportMargins (10,10,10,10);
。如果您想从 class 外部访问该函数,我已经创建了函数 CustomSetViewportMargins({args})
.
右键单击 select:升级为..
写下 class 和 header 的名称并添加。
然后按推广。
customplaintext.cpp
#ifndef CUSTOMPLAINTEXT_H
#define CUSTOMPLAINTEXT_H
#include <QPlainTextEdit>
class CustomPlainText:public QPlainTextEdit
{
Q_OBJECT
public:
CustomPlainText(QWidget * parent = 0);
void CustomSetViewportMargins(int left, int top, int right, int bottom);
void CustomSetViewportMargins(const QMargins & margins);
};
#endif // CUSTOMPLAINTEXT_H
customplaintext.h
#include "customplaintext.h"
CustomPlainText::CustomPlainText(QWidget *parent): QPlainTextEdit(parent)
{
setViewportMargins(10,10,10,10);
}
void CustomPlainText::CustomSetViewportMargins(int left, int top, int right, int bottom)
{
setViewportMargins(left, top, right, bottom);
}
void CustomPlainText::CustomSetViewportMargins(const QMargins & margins)
{
setViewportMargins(margins);
}
之前:
之后:
完整代码: https://github.com/eyllanesc/Whosebug/tree/master/CustomPlainTextProject
我有一个简单的文本编辑应用程序 - QPlainTextEdit,由 qt designer 创建。我只需要从 mainwindow.cpp setViewportMargins.But 收到以下错误消息 - void QAbstractScrollArea::setViewportMargins(int, int, int, int)' is protected.
代码:
ui->textEdit->setViewportMargins(10,10,10,10);
有什么办法吗?
为了使用 QPlainTextEdit
的受保护方法,您需要对其进行子类化,如下所示:
class MyPlainTextEdit: public QPlainTextEdit
{
Q_OBJECT
public:
MyPlainTextEdit(QWidget* parent=0):QPlainTextEdit(parent){}
//ADD A PUBLIC METHOD
void publicSetViewportMargins(int left, int top, int right, int bottom)
{
setViewportMargins(left ,top, right, bottom);
}
//OR
protected:
void setViewportMargins(int left, int top, int right, int bottom)
{
//REIMPLEMENT METHOD HERE
}
};
受保护的函数只能在class内使用,所以会产生错误。我已经通过设计 CustomPlainText
class 并将其提升为原始 QPlainTextEdit
来解决它,其中我使用了 setViewportMargins (10,10,10,10);
。如果您想从 class 外部访问该函数,我已经创建了函数 CustomSetViewportMargins({args})
.
右键单击 select:升级为..
写下 class 和 header 的名称并添加。
然后按推广。
customplaintext.cpp
#ifndef CUSTOMPLAINTEXT_H
#define CUSTOMPLAINTEXT_H
#include <QPlainTextEdit>
class CustomPlainText:public QPlainTextEdit
{
Q_OBJECT
public:
CustomPlainText(QWidget * parent = 0);
void CustomSetViewportMargins(int left, int top, int right, int bottom);
void CustomSetViewportMargins(const QMargins & margins);
};
#endif // CUSTOMPLAINTEXT_H
customplaintext.h
#include "customplaintext.h"
CustomPlainText::CustomPlainText(QWidget *parent): QPlainTextEdit(parent)
{
setViewportMargins(10,10,10,10);
}
void CustomPlainText::CustomSetViewportMargins(int left, int top, int right, int bottom)
{
setViewportMargins(left, top, right, bottom);
}
void CustomPlainText::CustomSetViewportMargins(const QMargins & margins)
{
setViewportMargins(margins);
}
之前:
之后:
完整代码: https://github.com/eyllanesc/Whosebug/tree/master/CustomPlainTextProject