Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何添加与第一个选项卡完全相同的另一个选项卡(类似于浏览器)?_Qt - Fatal编程技术网

Qt 如何添加与第一个选项卡完全相同的另一个选项卡(类似于浏览器)?

Qt 如何添加与第一个选项卡完全相同的另一个选项卡(类似于浏览器)?,qt,Qt,我有一个Qt浏览器和一个tabwidget,它有一个标签、lineedit和webview。我想添加其他看起来像第一个标签,线编辑和网络视图 我怎样才能做到这一点?我不知道如何克隆或复制现有的选项卡或小部件,因此我相信您需要自己编写选项卡内容代码,也就是说,不需要通过设计器 如果您只需要一个QLabel、一个QLineEdit和一个QWebView,那么这并不复杂。其想法是: 创建直接从QWidget或从QFrame继承的自定义小部件 以您希望的方式在其构造函数中布局包含的小部件 通过QTabW

我有一个Qt浏览器和一个tabwidget,它有一个标签、lineedit和webview。我想添加其他看起来像第一个标签,线编辑和网络视图


我怎样才能做到这一点?

我不知道如何克隆或复制现有的选项卡或小部件,因此我相信您需要自己编写选项卡内容代码,也就是说,不需要通过设计器

如果您只需要一个QLabel、一个QLineEdit和一个QWebView,那么这并不复杂。其想法是:

创建直接从QWidget或从QFrame继承的自定义小部件 以您希望的方式在其构造函数中布局包含的小部件 通过QTabWidget.addTab函数,在需要时添加任意数量的选项卡。 这个例子有你所需要的一切——它实际上比你所需要的更复杂,因为它为每个选项卡使用不同的小部件。你只需要一个小部件就可以脱身

如果您想知道如何进行布局,并且对从设计器获得的内容感到满意,则可以检查生成的.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可能也应该是一个插槽,但这应该让您开始。

我不知道任何方法来克隆或复制现有的选项卡或小部件,因此我相信您需要自己编写选项卡内容,即不通过设计器

如果您只需要一个QLabel、一个QLineEdit和一个QWebView,那么这并不复杂。其想法是:

创建直接从QWidget或从QFrame继承的自定义小部件 以您希望的方式在其构造函数中布局包含的小部件 通过QTabWidget.addTab函数,在需要时添加任意数量的选项卡。 这个例子有你所需要的一切——它实际上比你所需要的更复杂,因为它为每个选项卡使用不同的小部件。你只需要一个小部件就可以脱身

如果您想知道如何进行布局,并且对从设计器获得的内容感到满意,则可以检查生成的.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可能也应该是一个插槽,但这应该让您开始。

这是一个很难回答的问题,因为您不知道如何实现第一个选项卡。我设计的第一个标签没有为它编写代码,这是一个很难回答的问题,因为我不知道第一个标签是如何实现的。通常的做法是做与第一个完全相同的事情。我设计的第一个没有为它编写代码