Nominate our 2022 Qt Champions!

[Solved]tab size

  • hi

    Im facing a little trouble as to how arrange the GUI elements. I have a form in which a calender is created with each date as a push button.

    I need somethin like three option button at the top to go to three different menus, somethin like a tool bar with icons. Can we use the system buttons like those provided by samsung? Or using a tab widget is better.

    I pulled in a default tab widget. But i cant change the size of each tab in the designer.


  • I think "this snippet": is usefull for you.

  • Thanks eddy,

    i have managed to use the tabs. i have put a tab widget named tabWidget with 3 tabs to an already existing form using the designer

    The problem is, the calender is displayed in all the three tabs. i jus want it to be there while clicking any one of the tabs
    Or do i have to create a tabwidget manually than using the designer?????????????
    this is how i have created the calender buttons
    for(int i=0;i<6;i++)
    for(int j=0;j<7;j++)

           cellBut[i][j]=new QPushButton(this);



  • You can use Qt Designer to add a tabwidget, drag a QCalendar to the first, drag something else to the second and so on.
    You can insert additional pages using RMB > Insert Page.

    Can you show your code where you add the Calendar to the TabWidget?

  • eddy,

    I have already made a calender, in the sense, somthing like a custom calender.
    and the tabwidget is jus the default designer one.
    I cant figure out how to put the buttons/calender as whole on to the tab :(

    I have used

    initMemberVariable();// here buttons are created- 30/31 days
    initMonthYear();// defining each month
    initWeekDay();// arranging the week display
    createLayout();// arranging the whole layout



  • I would expect you make a class for your custom widget and then you add an instance to a specific tab widget page.
    As I see your code, I guess you don't have a class?

  • @
    CalenderForm::CalenderForm(QWidget *parent): QMainWindow(parent), ui(new Ui::CalenderForm)



    this class has few other functions defined too.
    could u elaborate on ur earlier explanation, i could not follow :(


  • You are inheriting from QMainWindow. I would rather use a QWidget. Can you show your header file?

  • @

    #define CALENDERFORM_H

    #include <QtGui/QMainWindow>
    #include <QWidget>
    #include <QDate>
    #include <QtGui>
    namespace Ui
    class CalenderForm;

    class CalenderForm : public QMainWindow

    explicit CalenderForm(QWidget *parent = 0);
    virtual ~CalenderForm();
    Ui::CalenderForm *ui;
    int monthValue;
    int iArrCycleStage[6][7];
    int iArrDates[6][7],ht,wd;
    QString strArrayNotes[6][7];
    QDate selectedDate;
    QGridLayout *controlsLayout;
    QLabel *monthDisplay,*yearDisplay,*weekDisplay[7];
    QHBoxLayout *weekLayout;
    QPushButton *cellBut[6][7],*button;
    QLabel *pLabelDateDisplay,*pLabelStatus;
    QString strPreviousSelection;

    private slots:


  • As I said I would subclass from QWidget.

    In Qt Designer you can put a QWidget in the tab you like as a placeholder and then promote it to your CalenderForm. When compiling the QWidget will be considered as a CalenderForm and shown that way.

    Here is a "similar topic": on how to promote a QFrame to a custom widget. Use a QWidget instead and your CalenderForm.

  • have a look at "this example": . it uses a QTabWidget and a class derived from QWidget to populate it.

  • Hello everyone,

    I have a doubt regarding the tab size. The 3 tabs that I've created does not entirely fill up the screen. How can i expand the tabs to fill the screen????


  • :) i found the way too. simple, set its stylesheet :)

    tabWidget->setStyleSheet("QTabBar::tab{height:60px; width:160px}");

Log in to reply