我有一个简单的应用程序,文本编辑- QPlainTextEdit,由qt设计师创建。我只需要从mainwindow.cpp setViewportMargins.But获得以下错误消息- void::setViewportMargins( int,int)‘是受保护的。
代码:
ui->textEdit->setViewportMargins(10,10,10,10);有办法这样做吗?
发布于 2017-01-12 14:45:32
受保护的函数只能在类中使用,因此它会生成错误。我通过设计CustomPlainText类并将其提升到原来的QPlainTextEdit来解决这个问题,在其中我使用了setViewportMargins (10,10,10,10);。如果您想从类外部访问该函数,我已经创建了函数CustomSetViewportMargins({args})。
右击并选择:升级到..

写出类的名称和标题并添加它。

然后按下宣传。

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_Hcustomplaintext.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/stackoverflow/tree/master/CustomPlainTextProject
发布于 2017-01-12 14:43:32
为了使用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
}
};https://stackoverflow.com/questions/41615743
复制相似问题