我有一个用Qt制作的浏览器,我有一个带有一个标签的tabwidget(有标签,lineedit和webview)。我想添加其他看起来像第一个的(有标签,lineedit和webview)。
我该怎么做?
答案 0 :(得分:0)
我不知道有什么方法可以“克隆”或复制现有的标签或小部件,所以我相信你需要自己编写标签内容(即不通过设计师)。
如果您只需要QLabel,QLineEdit和QWebView,那就不是很复杂了。这个想法是:
QWidget
继承,或从QFrame
继承)QTabWidget.addTab
功能添加任意数量的标签。Tab Dialog示例包含您需要的所有内容 - 它实际上比您需要的更复杂,因为它为每个选项卡使用不同的小部件。你可以使用一个小部件。
如果您想知道如何进行布局,并且对设计器的内容感到满意,则可以检查生成的(.moc
)文件。您将看到它使用的布局,您可以在自己的代码中复制它。
Skeleton widget:
class BrowserTab : public QWidet
{
Q_OBJECT
public:
BrowserTab(QUrl const& home, QWidget *parent = 0);
void setUrl(QUrl const& url);
private:
QWebView *web;
QLabel *title;
QLineEdit *urlEdit;
};
BrowserTab::BrowserTab(QUrl const& home, QWidget *parent)
: QWidget(parent)
{
urlEdit = new QLineEdit(this);
title = new QLabel(this);
web = new QWebView(this);
QVBoxLayout *vl = new QVBoxLayout;
vl->addLayout(title);
vl->addLayout(urlEdit);
vl->addLayout(web);
setLayout(vl);
setUrl(home);
}
void BrowserTab::setUrl(QUrl const& url)
{
web->load(url);
// update label & urlEdit here
}
你需要做更多的事情才能使它成为一个合适的浏览器(setUrl
也应该是一个插槽),但这应该让你开始。