Несколько окон. Qt

162
06 июня 2022, 20:10

Вообщем, не понимаю как правильно создавать второе окно. Есть функция addTimer(), как метод класса главного окна MainWindow.

class MainWindow : public QMainWindow
{
public:
    MainWindow();
protected:
    void timerEvent(QTimerEvent *e);
    QMap<QTimer*,QTextEdit*> getTimers();
private:
    QToolBar *toolbar;
    void setToolBar();
    QLabel *timelbl;
    QLabel *mainTimerLbl;
    QTextEdit *mainTimerDescriptionLbl;
    QListWidget *listW;
    QMap<QTimer*,QTextEdit*> timers_descriptions;
    QWindow *addWindow;
    void addTimer();
};

Сама функция

void MainWindow::addTimer()
{
    addWindow = new QWindow();
    addWindow->resize(200,120);
    addWindow->setTitle("New Timer");
    QLabel *timeLbl = new QLabel("Time",this);
    timeLbl->setGeometry(20,60,50,20);
    QTimeEdit *timeEdit = new QTimeEdit(this);
    timeEdit->setGeometry(90,65,100,25);
    addWindow->show();
}

Вообщем, окно создаётся, но QLabel и QTimeEdit не появляется. Подскажите как правильно

Answer 1

QWindow служит для других задач, для десктопных приложений лучше использовать QWidget, QDialog, или QMainWindow.

Возьмем QWidget, тогда отображение вашего окна и его содержимого будет таким:

class MainWindow : public QMainWindow
{
    //...
private:
    QWidget* addWindow;
};
void MainWindow::addTimer()
{
    addWindow = new QWidget();
    addWindow->resize(200,120);
    addWindow->setWindowTitle("New Timer");
    QLabel *timeLbl = new QLabel("Time");
    timeLbl->setGeometry(20,60,50,20);
    QTimeEdit *timeEdit = new QTimeEdit();
    timeEdit->setGeometry(90,65,100,25);
    // Добавим на окно менеджер вертикального расположения элементов
    addWindow->setLayout(new QVBoxLayout());
    // А теперь, при помощи менеджера расположения, добавим сами виджеты на окно
    addWindow->layout()->addWidget(timeLbl);
    addWindow->layout()->addWidget(timeEdit);
    addWindow->show();
}

Про QVBoxLayout можно почитать здесь

READ ALSO
Среднее арифметическое данных массива (который элемент структуры динамического массива)

Среднее арифметическое данных массива (который элемент структуры динамического массива)

Имеется следующая проблемаЕсть функция для расчета среднего балла (индивидуальных и общего)

168
Можно ли double &quot;засунуть&quot; в bitset, чтобы он вывел его в 2виде?

Можно ли double "засунуть" в bitset, чтобы он вывел его в 2виде?

Можно ли double "засунуть" в bitset, чтобы он вывел его в 2виде?

211
Отображение переменных в QtCreator через gdb

Отображение переменных в QtCreator через gdb

Отладчик gdb не показывает содержимое переменной типа std::string

205