Solved Can not control the position of a QToolbar within a QTabWidget
-
Hi guys,
I have a, maybe for most of you really stupid, question, but I'm thinking about that for the last five hours, including a lot of asking Dr. Google, but I was not able to find a solution... :-(
I try to place a QToolbar within a QTabWidget (this is because within the tabs different kinds of widgets will run, both 3D and 2D representation of models, which will need different edit and filtering functions, which I want to place as near as possible to the graphical representation of the data). Basicaly it works, but the QToolbar ist located on the bottom of the widget, and I want it on the top...
Following the relevant parts of my code:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { // Setup GUI with application name and version ui->setupUi(this); QString windowTitle = applicationName + " " + version; this->setWindowTitle (windowTitle); // Create new toolbar for Cloud Viewer tab widget QToolBar *cloudViewerToolbar = new QToolBar; // Create actions for the Cloud Viewer toolbar QAction *actionFitToScreen = new QAction(QIcon(":/view/fit"),tr("Fit to screen"), this); // Add actions to Cloud Viewer toolbar cloudViewerToolbar->addAction(actionFitToScreen); // Add toolbar to Cloud Viewer tab widget ui->tabCloudViewer->layout()->addWidget(cloudViewerToolbar); // Connect actions for Cloud Viewer toolbar with slots connect(actionFitToScreen, SIGNAL(triggered()), this, SLOT(on_actionFit_to_screen_triggered())); // Set up the QVTK Cloud Viewer widget viewer.reset (new pcl::visualization::PCLVisualizer ("viewer", false)); ui->qvtkWidget->SetRenderWindow (viewer->getRenderWindow ()); viewer->setupInteractor (ui->qvtkWidget->GetInteractor (), ui->qvtkWidget->GetRenderWindow ()); MainWindow::updateViewerColors(); ui->qvtkWidget->update (); }
As mentioned, this code works, my only problem ist the positioning of the QToolbar on the bottom of the tab widget...
Can someone tell me, what I do not understand and point me to the right direction?
Thanks in advance,
Vittorio -
@cheops
To be clear: You wish to add a singleQToolbar
onto aQTabWidget
as a whole, not on each page. You will presumably be putting tab-pages on theQTabWidget
, but your code does not do that yet. You have added the toolbar and can tell it will come at the bottom of the tab-pages, but you want above the tabs. Is that correct? -
@JNBarchan
Hi,
thanks for your reply! I hope, I inderstand what you mean... no, I want to add a different QToolbar on each page of the tab widget! This seems to be no problem, the only thing I'm fighting with is, that the toolbar appears on the bottom of the tab page...
In my example I have two tabs, one for 3D-models and one for pictures. I need different filters and editing functions for this two tabs, that's why I want two show differene toolbars in the tabs...
Greetings,
VIttorio -
I try to place a QToolbar within a QTabWidget
// Add toolbar to Cloud Viewer tab widget ui->tabCloudViewer->layout()->addWidget(cloudViewerToolbar);
I take these statements to indicate that
ui->tabCloudViewer
is theQTabWidget
. Are you saying it is a page-widget on theQTabWidget
? What type is it? -
Hi,
Except that you are currently adding that toolbar under your QTabWidget and not at the bottom of the widget inside the tab.
Since you want different tabs to have different tool bars, you should consider making a base "tab widget" class that contains what you need and that you can configure.
-
@JNBarchan
No, ui->tabCloudViewer is a page on a QTabWidget with the name tabWidget... -
OK, thanks for the clarification.
In that case, you can use insertWidget so you can prepend the toolbar.
-
Hi,
my problem ist, that I'm not able to configure the tab widget in a way, that the toolbar appears at the top of the tab page... So to create a new class wouldnt change anything, because I would also in such a case not be able to configure the tab page in the way I want...Or am I completely wrong?
-
-
The widget you should have as tab should basically be:
- A QWidget with
- A QVBoxLayout and
- Your VTK widget inside that layout.
And in that case you can insert the QToolBar as proposed.
Or you can make a custom widget with the same content plus a method that would handle adding/setting a QToolBar in that tab.
-
@JNBarchan Class QLayout has no member insertWidget?
-
QBoxLayout::insertWidget. QBoxLayout is the base class of QVBoxLayout and QHBoxLayout.
-
@SGaist
I tried to create a new widget class based on MainWindow, where I can configure all things I need very easy in QtDesigner, and I can easily insert this widget withcloudViewer *cv = new cloudViewer; ui->tabWidget->addTab(cv, "3D Viewer");
... I think, this is the simplest way for my needs, or is there somthing wrong with this solution in you opinion?
-
I don't see anything particularly wrong here.