QPushButton не работает при добавлении другого виджета в проект на Qt С++
Я работаю над проектом на Qt, в котором у меня есть несколько виджетов, включая WidgetsPlace, TasksPlace и OtherPlace. Когда я добавляю виджет OtherPlace в главное окно, кнопка добавления задачи в TasksPlace называеться она " addTask " перестает работать.
WidgetsPlace тут не будет, так как он не нужен для решения проблемы
вот весь мой код:
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
class MainWindow : public QWidget {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "../file.h/MainWindow.h"
#include "../file.h/WidgetsPlace.h"
#include "../file.h/TasksPlace.h"
#include "../file.h/OtherPlace.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
setWindowTitle("BlackHoll");
setFixedSize(1600, 1000);
setStyleSheet("background-color: #1E1E1E;");
/// для Widget ///
WidgetsPlace *divLeftWidgetsPlade = new WidgetsPlace(this);
/// для Tasks ///
TasksPlace *divLeftTasksPlase = new TasksPlace(this);
/// для всего остального ///
OtherPlace *divOtherPlace = new OtherPlace(this);
}
MainWindow::~MainWindow() {
}
TasksPlace.h
#ifndef LEFTPANEL_H
#define LEFTPANEL_H
#include <QVBoxLayout>
#include <QWidget>
class TasksPlace : public QWidget {
Q_OBJECT
public:
TasksPlace(QWidget *parent = nullptr);
private:
QVBoxLayout *tasksLayout;
QWidget *divLeftTasksPlase;
QWidget *dviWidgetBack;
// int minItemTasksLayout;
// const int maxItemTabTask = 3;
// int minItemTabTask;
private slots:
void addTask();
// void addNode();
};
#endif // LEFTPANEL_H
TasksPlace.cpp
#include "../file.h/TasksPlace.h"
#include <QPushButton>
#include <QWidget>
#include <QScrollArea>
#include <QLineEdit>
#include <QDebug>
#include <QScrollBar>
TasksPlace::TasksPlace(QWidget *parent) : QWidget(parent) {
/// место ///
QWidget *divLeftTasksPlase = new QWidget(this);
divLeftTasksPlase->setGeometry(54, 0, 300, 1000);
divLeftTasksPlase->setStyleSheet("background-color: #D9D9D9;");
/// место для Layout ///
QScrollArea *scrollAreaPlaceTasksLayout = new QScrollArea(divLeftTasksPlase);
scrollAreaPlaceTasksLayout->setGeometry(28, 0, 270, 1000);
scrollAreaPlaceTasksLayout->setWidgetResizable(true);
QWidget *placeTasksLayout = new QWidget();
placeTasksLayout->setGeometry(28, 0, 240, 1000);
placeTasksLayout->setStyleSheet("background-color: #D9D9D9;");
scrollAreaPlaceTasksLayout->setWidget(placeTasksLayout);
scrollAreaPlaceTasksLayout->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { background: #D9D9D9; width: 0px; }");
scrollAreaPlaceTasksLayout->setStyleSheet(
"QScrollArea { border: none;}"
);
/// Layout ///
tasksLayout = new QVBoxLayout(placeTasksLayout);
tasksLayout->setAlignment(Qt::AlignTop);
/// кнопка для добовления Tasks ///
QPushButton *addTask = new QPushButton ("", divLeftTasksPlase);
addTask->setFixedSize(230, 37);
addTask->setStyleSheet("background-color: #AAAAAA;"
"border-radius: 10px");
tasksLayout->addSpacing(12);
tasksLayout->addWidget(addTask);
tasksLayout->addSpacing(20);
connect(addTask, &QPushButton::clicked, this, &TasksPlace::addTask);
}
void TasksPlace::addTask() {
qDebug() << "addTask slot called";
/// создание inTask ///
QLineEdit *inTasks = new QLineEdit (divLeftTasksPlase);
inTasks->setAlignment(Qt::AlignCenter);
inTasks->setFixedSize(236, 37);
inTasks->setStyleSheet("border-radius: 10px;"
"background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 #AFAFAF, stop:1 #D9D9D9);");
inTasks->show();
/// добовление inTask ///
tasksLayout->addSpacing(5);
tasksLayout->addWidget(inTasks);
// dviWidgetBack->setGeometry(275, 20, 30, 955); /// x = 275 y = 20 h = 955
// minItemTasksLayout++;
};
OtherPlace.h
#ifndef OTHERPLACE_H
#define OTHERPLACE_H
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
class OtherPlace : public QWidget {
Q_OBJECT
public:
OtherPlace(QWidget *parent = nullptr);
};
#endif // OTHERPLACE_H
OtherPlace.cpp
#include "../file.h/OtherPlace.h"
#include <QScrollArea>
#include <QScrollBar>
#include <QLabel>
#include <QVBoxLayout>
#include <QPushButton>
OtherPlace::OtherPlace(QWidget *parent) : QWidget(parent) {
/// создание Other ///
QWidget *divOtherPlace = new QWidget(this);
divOtherPlace->setStyleSheet("background-color: #1E1E1E;");
divOtherPlace->setGeometry(354, 0, 1246, 1000);
/// место для Img ///
QWidget *divImgPlace = new QWidget(divOtherPlace);
divImgPlace->setStyleSheet("background-color: #1E1E1E;"
"border-radius: 10px;");
divImgPlace->setGeometry(309, 20, 910, 150);
/// шапка ///
QLabel *imageLabel = new QLabel(divImgPlace);
QPixmap pixmap("../src/img/fon.png");
imageLabel->setPixmap(pixmap);
/// место где будут Nodes ///
QScrollArea *scrollArea = new QScrollArea(divOtherPlace);
scrollArea->setGeometry(10, 21, 270, 955);
scrollArea->setWidgetResizable(true);
QWidget *placeWidgetTabLayout = new QWidget();
placeWidgetTabLayout->setStyleSheet("background-color: #1E1E1E;");
placeWidgetTabLayout->setGeometry(10, 0, 254, 952);
scrollArea->setWidget(placeWidgetTabLayout);
scrollArea->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { background: #1E1E1E; width: 0px; }");
scrollArea->setStyleSheet(
"QScrollArea { border: none;}"
);
/// Layout для Nodes ///
QVBoxLayout *layoutWidgetTab = new QVBoxLayout(placeWidgetTabLayout);
layoutWidgetTab->setAlignment(Qt::AlignTop);
/// разделитель с кнопками ///
QWidget *dviWidgetBack = new QWidget(divOtherPlace);
dviWidgetBack->setStyleSheet("background-color: #D9D9D9;"
"border-top-right-radius: 20px;"
"border-bottom-right-radius: 20px;"); /// border-radius: 20px
dviWidgetBack->setGeometry(0, 0, 30, 1000); /// x = 275 y = 20 h = 955
}