界面_显示自定义窗口

制作自定义窗口类


存在的问题:
 制作的窗口不能移动
 如果要改进,可以参见“无标题窗口的移动”


在...App的 InitInstance() 中添加以下内容

BOOL ...App::InitInstance()
{
 // TODO: 在此执行任意逐线程初始化
 GdiplusStartupInput gdiplusStartupInput;
 GdiplusStartup( &gdiplusToken , &gdiplusStartupInput , NULL );

 this->m_pMainWnd = new ...Wnd();
 this->m_pMainWnd->ShowWindow( this->m_nCmdShow );
 this->m_pMainWnd->UpdateWindow();

 // 注意一定要 return TRUE;
 // 否则的话,程序就要退出啦
 return TRUE;
}


// 自定义窗口的实现


// ...Wnd.h

#pragma once

// ...Wnd

class ...Wnd : public CWnd
{
 DECLARE_DYNAMIC(puzzleWnd)

public:
 ...Wnd();
 virtual ~...Wnd();
protected:
 DECLARE_MESSAGE_MAP()
public:
 void userCreate();
public:
 afx_msg void OnPaint();
};


// ...Wnd.cpp : 实现文件
//

#include "stdafx.h"
#include "...App.h"

#include "Resource.h"
#include "./...wnd.h"

// ...Wnd

IMPLEMENT_DYNAMIC(...Wnd, CWnd)
...Wnd::...Wnd()
{
 this->userCreate();
}

puzzleWnd::~puzzleWnd()
{
}


BEGIN_MESSAGE_MAP(puzzleWnd, CWnd)
 ON_WM_PAINT()
END_MESSAGE_MAP()


// 用用户定义函数

//建立窗口
void ...Wnd::userCreate()
{
 char szTitle[] = "窗口标题";
 CreateEx(
  0 ,
  ::AfxRegisterWndClass(
   0 ,
   ::LoadCursor( NULL , IDC_ARROW ) ,
   NULL ,
   ::LoadIcon( NULL , MAKEINTRESOURCE( IDI_ICONWND) )
  ) ,
  szTitle ,
  WS_POPUP ,
  200 , 200 , mainWindowWidth , mainWindowHeight ,
  NULL ,
  NULL
  );
}

// ...Wnd 消息处理程序

// WM_PAINT消息处理函数
void ...Wnd::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 // TODO: 在此处添加消息处理程序代码
 // 不为绘图消息调用 CWnd::OnPaint()
 Graphics graphics( dc.m_hDC );

 //主界面背景色,为 #6699ff 到 #ffffff 线性渐变色
 LinearGradientBrush RtoWBrush(
  Point( 0 , 0 ) ,
  Point( mainWindowWidth * 11 / 10 , 0 ) ,
  Color( 255 , 0x66 , 0x99 , 0xff ) ,
  Color( 255 , 0xff , 0xff , 0xff )
  );
 graphics.FillRectangle( &RtoWBrush , 0 , 0 , mainWindowWidth , mainWindowHeight );

}

//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想要实现一个功能,就是在QTableView中点击某一行的时候,弹出一个自定义窗口,这个窗口可以显示该行中的详细信息,对吧? 那么,您可以通过以下步骤来实现: 1. 在QTableView中设置一个信号槽函数,当用户点击某一行的时候,该函数会被触发。 2. 在信号槽函数中,获取用户点击的行号和列号。 3. 根据行号和列号,获取该行中的数据,并将数据传递给自定义窗口。 4. 弹出自定义窗口显示该行中的详细信息。 下面是一些示例代码,您可以参考一下: ```python from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MyTableView(QTableView): def __init__(self): super().__init__() # 设置信号槽函数 self.clicked.connect(self.show_detail) def show_detail(self, index): # 获取行号和列号 row = index.row() col = index.column() # 获取该行中的数据 model = self.model() data = model.data(model.index(row, col)) # 弹出自定义窗口 detail_dialog = DetailDialog(data) detail_dialog.exec_() class DetailDialog(QDialog): def __init__(self, data): super().__init__() # 创建UI界面 self.label = QLabel(data, self) self.button = QPushButton("Close", self) self.button.clicked.connect(self.close) # 设置布局 layout = QVBoxLayout(self) layout.addWidget(self.label) layout.addWidget(self.button) ``` 在这个示例代码中,我们创建了一个自定义的QTableView,并在其中设置了一个信号槽函数。当用户点击某一行的时候,该函数会被触发,获取该行中的数据,并将数据传递给自定义窗口自定义窗口是一个QDialog,其中包含一个用于显示数据的QLabel和一个用于关闭窗口的QPushButton。在自定义窗口中,我们将数据显示在QLabel中,并为QPushButton设置了一个点击事件,点击按钮时,窗口会关闭。 当您运行这个示例代码时,就可以在QTableView中点击某一行了,会弹出一个自定义窗口显示该行中的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值