私は2つの.uiファイルはQtのデザイナを使用して作成したカスタムウィジェット
main_window.ui
- クラスQMainWindowのみ1 QTabWidget を含む(名前mywindowの)
my_widget.ui
- クラスQWidgetの(名前はMyWidget)を含みますQLabelとのQPushButton各
私はこの
のようなものを読み込む設定ファイルを持っていますProcessAタブ1; ProcessB Tab2; ProcessC Tab1
上記から明らかなように、Tab1にはAとC、Tab2にはBが必要です。私は希望のタブを作成することができました。私は2番目のUIのインスタンスを作成し、タブを設定したいと思います。
私が代わりにはMyWidgetクラスののQPushButtonクラスを使用することができたし、(正しい)次の出力を持っている
私ははMyWidgetクラスを使用しようとすると、私は空白になってしまいますタブ。
コードの概要 -
MyWindow::setupTabs(std::string fileName)
{
Read file
for each process in file:
MyWidget *temp = new MyWidget();
Fill text in label and button
Create std::vector<std::vector<MyWidget*> > and fill according to tabs
for each tab call populateTab()
}
MyWindow::populateTab(processList, tabName)
{
QFrame* group = new QFrame();
QVBoxLayout* vbox = new QVBoxLayout();
vbox->setSpacing(0);
group->setLayout(vbox);
QScrollArea* scrollArea = new QScrollArea();
for (size_t i = 0; i < processList.size(); ++i)
vbox->addWidget(processList[i]); //vbox->addWidget(new QPushButton); works fine
scrollArea->setWidget(group);
ui->tabWidget->addTab(scrollArea, tabName);
}
setupTabs機能は、所望の、したがって、私は非常に簡単にコードを記載しているとおりに行います。
MyWidget.hは私が私が間違っているのか知っている聞かせてください。この
namespace Ui {
class MyWidget;
}
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
private:
Ui::MyWidget *ui;
};
のように見えます。
タブには「MyWidget」が含まれていません。しかし、その代わりにQPushButtonを追加すると、出力は期待どおりになります。各タブには適切なボタンがあります。 –
私はconfigファイル内のすべてのプロセスに対して新しいインスタンスを作成します。私はその部分が正常に動作していることを知っている。私が探しているのは、ラベルとボタンを含む私のウィジェットを作成し、それをメインウィンドウに動的に追加する方法です。 –
最小限の例が追加されました。それがあなたを助けないなら、あなたは働くものを追加しなければなりません。 – Blechdose