开发者

How can I add another tab that looks exactly like the first one (like in a browser)?

I have a browser made in Qt and a I have a t开发者_JAVA技巧abwidget with one tab (which has a label, lineedit and a webview). I want to add others that look like the first one (have label, lineedit and webview).

How can I do this?


I don't know of any way to "clone" or duplicate an existing tab or widget, so I believe you'll need to code the tab contents yourself (i.e. not through the designer).

If all you need are a QLabel, a QLineEdit and a QWebView, that's not very complex. The idea would be to:

  • create a custom widget (inheriting from QWidget directly, or from QFrame)
  • lay out the contained widgets in the fashion you want in its constructor
  • add as many tabs as you want, when you want them, via the QTabWidget.addTab function.

The Tab Dialog example has everything you need - it's actually more complex than what you need because it uses different widgets for each tab. You can get away with a single widget.

If you wonder how to do the layout, and you're satisfied with what you got from the designer, you can inspect the generated (.moc) files. You'll see what layouts it uses, and you can replicate that in your own code.

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
}

You'll need to do a bit more to make it a proper browser (setUrl should probably be a slot too), but this should get you started.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜