当我尝试用makefile编译我的qt程序时,它不起作用

时间:2019-02-01 20:45:14

标签: c++ linux qt debian

当我QT一切内编译我PROGRAMM工作正常,但是当我编译它使用手动:

  

qmake myFile.pro

     

制作

我遇到以下错误:

using System.IO.Ports;
using System.Timers;

namespace BarCode_manager
{
    public partial class MainWindow : Window
    {

        private static SerialPort currentPort = new SerialPort();
        private static System.Timers.Timer aTimer;

        private delegate void updateDelegate(string txt);

        public MainWindow()
        {
            InitializeComponent();
            currentPort.PortName = "COM6";
            currentPort.BaudRate = 9600;
            currentPort.ReadTimeout = 1000;

            aTimer = new System.Timers.Timer(1000);
            aTimer.Elapsed += OnTimedEvent;
            aTimer.AutoReset = true;
            aTimer.Enabled = true;
        }

        private void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
           if (!currentPort.IsOpen)
            {
                currentPort.Open();
                System.Threading.Thread.Sleep(100); /// for recieve all data from scaner to buffer
                currentPort.DiscardInBuffer();      /// clear buffer          
            }
            try
            {
                string strFromPort = currentPort.ReadExisting();
                lblPortData.Dispatcher.BeginInvoke(new updateDelegate(updateTextBox), strFromPort);
            }
            catch { }
        }

        private void updateTextBox(string txt)
        {
            if (txt.Length != 0)
            {
                aTimer.Stop();
                aTimer.Dispose();
                txtReceive.Text = Convert.ToString(aTimer.Enabled);
                currentPort.Close();
            }
            lblPortData.Text = txt;
            lblCount.Content = txt.Length;
            txtReceive.Text = Convert.ToString(aTimer.Enabled);
        }          

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (currentPort.IsOpen)
                currentPort.Close();
        }
    }
}

请帮助;)

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该先查看文档,这里https://doc.qt.io/qt-5/qmdiarea.html 顶部有一个框,其中带有标有“ Header:”的行。

Header: #include <QMdiArea>

它告诉您使它起作用所需的内容。

另一行“ qmake:”

qmake:  QT += widgets

告诉您必须放入.pro文件中的内容。这两个条目都是必需的(除非它们已经以其他方式包含在内)。

第二个告诉构建系统,编译需要哪些文件,因此它会在makefile中使用正确的标志生成编译器调用。 第一个告诉编译器中的预处理器需要哪些qt代码部分。

请记住,如果您更改了.pro文件,则必须再次运行qmake来重建Makefile。