对话框伸缩功能的实现

1.按钮点击文字变化 同时对话框大小变化

void CTestDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CString str;
	if (GetDlgItemText(IDC_BUTTON1,str),str=="收缩<<")
	{
		SetDlgItemText(IDC_BUTTON1,"扩展>>");
	} 
	else
	{
		SetDlgItemText(IDC_BUTTON1,"收缩<<");
	}
	static CRect rectLarge;
	static CRect rectSmall;
	if (rectLarge.IsRectNull())
	{
		CRect rectSeparator;
		GetWindowRect(&rectLarge);
		GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);

		rectSmall.left=rectLarge.left;
		rectSmall.top=rectLarge.top;
		rectSmall.right=rectLarge.right;
		rectSmall.bottom=rectSeparator.bottom;
	}
	if(str=="收缩<<")
	{
		SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER);
	}
	else
	{
		SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER);
	}
}

获取按钮文字 若为“收缩<<”则变为"扩展>>"

	static CRect rectLarge;
	static CRect rectSmall;

定义两个静态变量类,静态变量在第一次获得取值后,以后再次单击此按钮时,并不需要再去设置这两个变量的值,因此,将这两个变量定义为静态变量。

*IsRectNull() 判断矩阵是否为空。

GetWindowRect(&rectLarge)获得整个对话框的原始尺寸

GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);获得图像控件的大小尺寸赋值给rectSeparator

	if(str=="收缩<<")
	{
		SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER);
	}
	else
	{
		SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER);
	}

如果当前按钮文本显示为“收缩”

则调用SetWindowPos设置为rectSmall的宽高, 最后一个参数为风格的定义 

SWP_NOMOVE|SWP_NOZORDER

1:维持窗口当前位置,这将忽略x,y参数

2:维持当前的z次序,这将忽略pWndInsertAfter参数

windows系统管理三个独立的z次序——一个用于顶层窗口、一个用于兄弟窗口,还有一个是用于最顶层窗口。最顶层窗口覆盖所有其他非顶层窗口,而不管它是不是活动窗口或是前台窗口。                                                                                                                                             

以下是使用QT实现文件预览功能的示例代码: 1. 在QT Creator中创建一个新的QT Widgets应用程序 2. 在主窗口中添加一个QTextEdit和一个QLabel控件 3. 在主窗口的构造函数中添加以下代码: ``` MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 设置QTextEdit为只读模式 ui->textEdit->setReadOnly(true); // 将QLabel控件设置为自动伸缩 ui->label->setScaledContents(true); } ``` 4. 添加一个打开文件的按钮,并在其槽函数中添加以下代码: ``` void MainWindow::on_openButton_clicked() { // 弹出文件选择对话框,选择要预览的文件 QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("All Files (*.*)")); // 如果文件名不为空,则打开文件并显示在QTextEdit控件中 if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); ui->textEdit->setText(in.readAll()); file.close(); // 显示文件的图标和缩略图 QFileInfo fileInfo(fileName); QPixmap pixmap(fileInfo.absoluteFilePath()); ui->label->setPixmap(pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); } } } ``` 5. 运行程序并点击打开文件按钮,选择一个文件进行预览。文件内容将显示在QTextEdit控件中,文件的图标和缩略图将显示在QLabel控件中。 注意:此示例只适用于文本文件和图像文件的预览,如果要预览其他类型的文件,需要使用不同的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值