Qt在单击按钮时调用Child-Window
Qt call Child-Window on a button click
我是Qt的新手。我正在尝试从myMyMainWindow
打开花药window
.我无法抓住,我在这种情况下做错了什么。不想让你们解决我的问题,就说拜托,我做错了什么。
所以我有一个MainWindow.h
(看看这个评论,认为你不需要了解它的整个过程(:
#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H
#include <QDialog>
#include <QMainWindow>
#include <QPushButton>
#include <QLayout>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include "timer.h"
class MyMainWindow: public QMainWindow
{
Q_OBJECT
private:
QPushButton *timer_Button;
QPushButton *StopWatch;
QPushButton *Close;
T_timer *myTimer;
public:
MyMainWindow(QWidget *parent);
public slots:
void Open_Timer_Window(); // Slot for opening a new window
};
#endif // MYMAINWINDOW_H
我的MyMainWindow.cpp
文件:
#include "MyMainWindow.h"
MyMainWindow::MyMainWindow(QWidget *parent=0): QDialog(parent)
{
// just creating Buttons
timer_Button = new QPushButton ("Timer");
Close=new QPushButton("Close");
QHBoxLayout *Up=new QHBoxLayout;
Up->addWidget(timer_Button);
QHBoxLayout *Down=new QHBoxLayout;
Down->addWidget(Close);
QVBoxLayout *Main=new QVBoxLayout;
Main->addLayout(Up);
Main->addLayout(Down);
// the main part
connect(Close,SIGNAL(clicked()),this,SLOT(close()));
connect(timer_Button,SIGNAL(clicked()),this,SLOT(Open_Timer_Window()));// call `Slot of Open_Timer_Window()`
setLayout(Main);
setWindowTitle("Smart Watch");
}
void MyMainWindow::Open_Timer_Window()
{
myTimer = new T_timer(0);
myTimer->show();
}
所以,我想我应该给你看第二个窗口,可能是有一个错误:
The header:
#include <QPushButton>
#include <QDialog>
#include <QHBoxLayout>
#include <QVBoxLayout>
class T_timer : public QDialog
{
Q_OBJECT
private:
QPushButton Start;
QPushButton Stop;
public:
T_timer(QWidget *parent=0);
};
.cpp
:
#include "timer.h"
T_timer::T_timer(QWidget *parent=0): QDialog(parent)
{
Start=new QPushButton ("Start");
Stop=new QPushButton ("Stop");
QHBoxLayout *Up=new QHBoxLayout;
Up->addWidget(Start);
Up->addWidget(Stop);
setLayout(Up);
}
完全,我已经在屏幕上打开了我的主窗口,单击按钮后timer
,我没有操作。如果可以的话,请帮助我。谢谢。
这是
代码中的拼写错误。您需要读取应用程序的输出以了解原因。
connect(timer_Button,SIGNAL(click((clicked(((,this,SLOT(Open_Timer_Window((((;
我建议你使用Qt5语法。
我不知道
你为什么在这种情况下使用 QLayout,我建议看看这篇文章:这里
但是要解决您的问题,请尝试将代码更改为以下内容:
connect(Close, SIGNAL(clicked(bool)), this, SLOT(close()));
connect(timer_Button, SIGNAL(clicked(bool)),this,SLOT(Open_Timer_Window()));
void MainWindow::Open_Timer_Window() {
Dialog dlg;
dlg.setModal(true);
dlg.show();
dlg.exec();
}
OBS:将对话框更改为您的窗口。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 我如何使用 GTK3 在 C 中调用另一个"window"
- Qt在单击按钮时调用Child-Window
- 获取由库调用创建的窗口的Window Handle (HWND)