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