Russian Qt Forum
Март 28, 2024, 19:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Вызов дополнительных виджетов  (Прочитано 6541 раз)
maria123252
Гость
« : Июнь 27, 2017, 16:02 »

есть небольшой проект, в котором по кнопке создается новый виджет. Проблема в том, что когда для кнопок на дополнительном виджете начинаю прописывать код, кнопки на дополнительном виджете не работают. Связку между главным окном и виджетами вроде сделала (родитель-предок). Но мне кажется, что я неправильно вызываю дополнительные виджеты. Подскажите, пожалуйста, советом.

void Client_mkpu::on_control_channel_clicked()      // кнопка "Управление каналами"
{
    QWidget *widgetControlChannel = new QWidget;
    Ui::management_channels ui_management_channels;
    ui_management_channels.setupUi(widgetControlChannel);
    widgetControlChannel->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint);
    widgetControlChannel->show();
}

Вызываю вот так виджет, а хотелось бы вызывать неновый виджет, а перейти к моему виджету и его классу
« Последнее редактирование: Июнь 29, 2017, 14:22 от maria123252 » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Июнь 28, 2017, 11:22 »

Мне кажется, что первое, что надо сделать - это widgetControlChannel оформить отдельным классом-наследником от QWidget.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
maria123252
Гость
« Ответ #2 : Июнь 28, 2017, 12:17 »

Мне кажется, что первое, что надо сделать - это widgetControlChannel оформить отдельным классом-наследником от QWidget.
Вот класс наследник, это всё сделано

#include "ui_management_channels.h"
#include "Client_mkpu.h"

namespace Ui {
    class management_channels;
}

class management_channels : public Client_mkpu, private Ui::management_channels
{
    Q_OBJECT

public:
    explicit management_channels(Client_mkpu *parent = 0);
    ~management_channels();

private slots:

private:
    Ui::management_channels *ui_management_channels;
};
//=========================================
management_channels::management_channels(Client_mkpu *parent) :
    Client_mkpu(parent),
    ui_management_channels(new Ui::management_channels)
{
    ui_management_channels->setupUi(this);
}

management_channels::~management_channels()
{
    delete ui_management_channels;
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #3 : Июнь 28, 2017, 12:28 »

виджет нужного класса надо создавать через
Код
C++ (Qt)
management_channels *widgetControlChannel = new management_channels(this);
вместо
Код
C++ (Qt)
QWidget *widgetControlChannel = new QWidget;
Ui::management_channels ui_management_channels;
ui_management_channels.setupUi(widgetControlChannel);
если я правильно понял суть вопроса
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
maria123252
Гость
« Ответ #4 : Июнь 28, 2017, 12:41 »

виджет нужного класса надо создавать через
Код
C++ (Qt)
management_channels *widgetControlChannel = new management_channels(this);
вместо
Код
C++ (Qt)
QWidget *widgetControlChannel = new QWidget;
Ui::management_channels ui_management_channels;
ui_management_channels.setupUi(widgetControlChannel);
если я правильно понял суть вопроса
и в дальнейшем я перейду на класс и буду пользоваться функциями в классе?
Записан
maria123252
Гость
« Ответ #5 : Июнь 28, 2017, 13:39 »

реализовала по вашей рекомендации, но теперь по кнопке выходит виджет, с наложением от главного окна
void Client_mkpu::on_telemetry_mkpu_clicked()       // кнопка "Телеметрия МКПУ"
{
    telemetry_mkpu *widgetTelemetryMkpu = new telemetry_mkpu(this);
    widgetTelemetryMkpu->show();
}
« Последнее редактирование: Июнь 28, 2017, 15:08 от maria123252 » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #6 : Июнь 28, 2017, 15:14 »

я ж не говорил выкинуть установку флагов окна Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
maria123252
Гость
« Ответ #7 : Июнь 28, 2017, 15:40 »

я ж не говорил выкинуть установку флагов окна Улыбающийся
а если их оставить, то получается следующее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #8 : Июнь 28, 2017, 21:49 »

а, там не хватает флага Qt::Window
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 22.