当我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();
}
}
}
请帮助;)
答案 0 :(得分:0)
在这种情况下,您应该先查看文档,这里https://doc.qt.io/qt-5/qmdiarea.html 顶部有一个框,其中带有标有“ Header:”的行。
Header: #include <QMdiArea>
它告诉您使它起作用所需的内容。
另一行“ qmake:”
qmake: QT += widgets
告诉您必须放入.pro文件中的内容。这两个条目都是必需的(除非它们已经以其他方式包含在内)。
第二个告诉构建系统,编译需要哪些文件,因此它会在makefile中使用正确的标志生成编译器调用。 第一个告诉编译器中的预处理器需要哪些qt代码部分。
请记住,如果您更改了.pro文件,则必须再次运行qmake来重建Makefile。