⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.cpp

📁 一个关于snake算法的VISUAL C++的实现
💻 CPP
字号:
#include "MainWindow.h"
#include "ImageLabel.h"

#include <QtGui/QFileDialog>
#include <QtGui/QMessageBox>
#include <QtGui/QRadioButton>

////////////////////////////////////////////////////////////////////////////
MainWindow::MainWindow(QWidget* parent /* = 0 */, Qt::WindowFlags flags /* = 0 */)
: QMainWindow(parent, flags),
m_scaleFactor(1),
m_ulPt(QPoint(150,150)),
m_lrPt(QPoint(300,300))
{
	// create gui elements defined in the Ui_MainWindow class
	setupUi(this);
	// create and set a QLabel for image loading
	m_imageLabel = new ImageLabel(this, m_imageFrame);
	m_imageLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
    m_imageLabel->setAlignment(Qt::AlignBottom | Qt::AlignRight);
	m_imageLabel->resize(m_imageFrame->width(), m_imageFrame->height());

	// create a null image
	m_image = new QImage();

	m_iterationOn->setChecked(true);

	// signal - slot connections
	QObject::connect(m_actionOpen, SIGNAL(triggered()), this, SLOT(slotOpen()));
	QObject::connect(m_actionZoomNormal, SIGNAL(triggered()), this, SLOT(slotZoomNormal()));
	QObject::connect(m_snakeButton, SIGNAL(clicked()), this, SLOT(slotSnakeButtonPressed()));
	QObject::connect(m_demoButton, SIGNAL(clicked()), this, SLOT(slotDemoButtonPressed()));
	QObject::connect(m_initEllipseButton, SIGNAL(clicked()), this, SLOT(slotInitCurveButtonPressed()));

	QObject::connect(m_iterationOn, SIGNAL(toggled(bool)), this, SLOT(slotIterationOn()));
	QObject::connect(m_iterationOff, SIGNAL(toggled(bool)), this, SLOT(slotIterationOff()));
	QObject::connect(m_iterationStep, SIGNAL(toggled(bool)), this, SLOT(slotIterationStep()));
}

////////////////////////////////////////////////////////////////////////////
MainWindow::~MainWindow()
{
	// no need to delete child widgets, QT does it all for us
	if (!m_image->isNull())
	{
		delete m_image;
		m_image = NULL;
	}
}

void MainWindow::showImage(QImage *img)
{
	if(m_imageLabel)
		m_imageLabel->setPixmap(QPixmap::fromImage(*img));
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotOpen()
{
	m_fileName = new QString(QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath()));

	if (!m_fileName->isEmpty())
	{
		m_image->load(*m_fileName);
		if (m_image->isNull())
		{
			QMessageBox::information(this, tr("Snake Ballooning"),
				tr("Cannot load %1.").arg(*m_fileName));
			return;
		}
		m_imageLabel->setPixmap(QPixmap::fromImage(*m_image));
		emit signalImageOpened();
		
		//scaleFactor = 1.0;

        //printAct->setEnabled(true);
        //fitToWindowAct->setEnabled(true);
        //updateActions();

        //if (!fitToWindowAct->isChecked())
        //    imageLabel->adjustSize();
    }
}

////////////////////////////////////////////////////////////////////////////
//void MainWindow::slotSaveAs()
//{
//	QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath());
//	QImage img = m_imageLabel->pixmap()->toImage();
//	img->
//}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotSnakeButtonPressed()
{
	emit signalSnakeButtonPressed();
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotDemoButtonPressed()
{
	emit signalDemoButtonPressed();
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotZoomNormal()
{
	qDebug("zoom to original");
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotInitCurveButtonPressed()
{
	emit signalInitCurve();
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotIterationOn()
{
	if (m_iterationOn->isChecked())
		emit signalIterationOn();
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotIterationOff()
{
	if (m_iterationOff->isChecked())
		emit signalIterationOff();
}

////////////////////////////////////////////////////////////////////////////
void MainWindow::slotIterationStep()
{
	if (m_iterationStep->isChecked())
		emit signalIterationStep();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -