0
我有一个用Qt制作的浏览器,并且我有一个tabwidget(带有一个标签,lineedit和webview)。我想添加看起来像第一个(有标签,lineedit和webview)的其他人。如何添加另一个与第一个标签完全相同的标签(如在浏览器中)?
我怎样才能做到这一点?
我有一个用Qt制作的浏览器,并且我有一个tabwidget(带有一个标签,lineedit和webview)。我想添加看起来像第一个(有标签,lineedit和webview)的其他人。如何添加另一个与第一个标签完全相同的标签(如在浏览器中)?
我怎样才能做到这一点?
我不知道有什么方法可以“克隆”或复制现有的选项卡或控件,所以我相信您需要自己编写选项卡内容(即不通过设计器)。
如果你只需要一个QLabel,一个QLineEdit和一个QWebView,那不是很复杂。该想法是:
QWidget
继承,或从QFrame
)QTabWidget.addTab
功能。Tab Dialog示例具有您需要的所有内容 - 它实际上比您需要的更复杂,因为它为每个选项卡使用不同的小部件。你可以逃脱一个小部件。
如果您想知道如何进行布局,并且您对设计师的设计感到满意,则可以检查生成的(.moc
)文件。你会看到它使用的是什么布局,你可以在你自己的代码中复制它。
骨架部件:
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
可能应该是一个插槽太),但这应该让你开始。
这是一个棘手的问题,不知道你如何实现第一个标签。做别人的惯常做法与第一种做法完全相同。 – Mat
以及我设计的第一个它没有写代码 – Andrew